array_diff_uassoc

Определение различия между массивами при помощи пользовательской функции с дополнительной проверкой ключей массива.
Синтаксис:

array array_diff_uassoc(array arr1, array arr2 [, array ..., callback key_compare_func])

Функция array_diff_uassoc() возвращает массив, который содержит значения, имеющиеся только в массиве arr1 ( и не имеющиеся в любых других).

Обратите внимание, что в отличии от функции array_diff(), при сравнении учитываются ключи. Сделано это при помощи пользовательской функции key_compare_func. Эта функция должна возвращать целое число, которое должно быть меньше нуля, если первый переданный ей аргумент меньше чем второй, равное нулю, если первый аргумент равен второму, и больше нуля, если первый аргумент больше второго. Эта функция отличается от array_diff_assoc(), где сравнение значений и индексов происходит автоматически.
Пример использования array_diff_uassoc():

<?phpfunction 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");
?>

Пример выведет следующее:

Array(
[b] => brown
[c] => blue
[0] => red
)

В приведенном примере пара "a" => "green" присутствует в обоих массивах, поэтому она не вошла в результирующий массив. В отличие от этого, значение red присутствует в результирующем массиве, т.к. в первом массиве это значение имело ключ 0,
а во втором массиве оно имело ключ 1.

Равенство индексов проверяется пользовательской функцией.
Обратите внимание, что данная функция не позволяет напрямую сравнивать многомерные массивы. Хотя конечно можно сравнить вложенные массивы, используя, например, array_diff_uassoc ($array1[0], $array2[0], "key_compare_func");.

Функция поддерживается PHP 5