(PHP 5 >= 5.1.0, PHP 7, PHP 8)
array_diff_ukey — Вычисляет расхождение массивов, используя callback-функцию для сравнения ключей
Сравнивает ключи array
с ключами
arrays
и возвращает разницу.
Эта функция похожа на array_diff() за исключением того,
что сравниваются ключи, а не значения.
В отличие от функции array_diff_key() для сравнения ключей используется функция, предоставляемая пользователем, а не встроенная функция.
array
Исходный массив
arrays
Массивы, с которыми идёт сравнение
key_compare_func
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
Возвращение нецелых значений из функции сравнения,
таких как число с плавающей точкой (float), приведёт к внутреннему
приведению возвращаемого значения callback-функции к целому числу (int).
Таким образом, значения 0.99
и 0.1
будут
приведены к целочисленному значению 0
,
что позволит сравнить эти значения как равные.
Возвращает массив (array), содержащий все элементы
array
, отсутствующие в каком-либо из всех
остальных массивов.
Пример #1 Пример использования array_diff_ukey()
<?php
function key_compare_func($key1, $key2)
{
if ($key1 == $key2)
return 0;
else if ($key1 > $key2)
return 1;
else
return -1;
}
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));
?>
Результат выполнения приведённого примера:
array(2) { ["red"]=> int(2) ["purple"]=> int(4) }
Замечание:
Обратите внимание, что эта функция обрабатывает только одно измерение n-размерного массива. Естественно, вы можете обрабатывать и более глубокие уровни вложенности, например, используя
array_diff_ukey($array1[0], $array2[0], 'callback_func');
.