(PHP 5, PHP 7)
array_diff_uassoc — Вычисляет расхождение массивов с дополнительной проверкой индекса, осуществляемой при помощи callback-функции
$array1
, array $array2
[, array $...
], callable $key_compare_func
)
Сравнивает array1
c array2
и возвращает разницу. В отличие от array_diff(),
для сравнения используются ключи.
В отличие от array_diff_assoc(), для сравнения ключей используется пользовательская функция, а не встроенная.
array1
Исходный массив
array2
Массив, с которым идет сравнение
...
Дополнительные массивы, с которыми осуществляется сравнение
key_compare_func
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим чем второй. Обратите внимание, что до PHP 7.0.0, это целое не могло выходить за рамки диапазона с -2147483648 по 2147483647
Возвращает array, содержащий все элементы
array1
, которых нет во всех остальных массивах.
Пример #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", "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");.