(PHP 5, PHP 7, PHP 8)
array_diff_uassoc — Вычисляет расхождение массивов с дополнительной проверкой индекса, осуществляемой при помощи callback-функции
Сравнивает array
c arrays
и возвращает разницу. В отличие от array_diff(),
для сравнения используются ключи.
В отличие от array_diff_assoc(), для сравнения ключей используется пользовательская функция, а не встроенная.
array
Исходный массив
arrays
Массивы, с которыми идёт сравнение
key_compare_func
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
Возвращение нецелых значений из функции сравнения,
таких как число с плавающей точкой (float), приведёт к внутреннему
приведению возвращаемого значения callback-функции к целому числу (int).
Таким образом, значения 0.99
и 0.1
будут
приведены к целочисленному значению 0
,
что позволит сравнить эти значения как равные.
Возвращает массив (array), содержащий все элементы
array
, которых нет во всех остальных массивах.
Пример #1 Пример использования array_diff_uassoc()
Пара "a" => "green"
существует в обоих
массивах и поэтому отсутствует в выводе функции. Наоборот,
пара 0 => "red"
находится в выводе функции,
так как второй аргумент "red"
имеет ключ,
равный 1
.
<?php
function key_compare_func($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", 1 => "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>
Результат выполнения данного примера:
Array ( [b] => brown [c] => blue [0] => red )
Равенство 2 индексов проверяется функцией, предоставляемой пользователем.
Замечание:
Эта функция обрабатывает только одно измерение n-размерного массива. Естественно, вы можете обрабатывать и более глубокие уровни вложенности, например, используя
array_diff_uassoc($array1[0], $array2[0], "key_compare_func");
.