English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
array_diff_uassoc()Функция сравнивает ключи и значения двух (или нескольких) массивов и возвращает массив, содержащий элементы array1, которые не существуют в других массивах с такими же значениями.
Эта функция отличается отarray_diff()поскольку array_diff() сравнивает значения, а эта функция сравнивает ключи и значения других массивов.
Эта функция аналогичнаarray_diff_assoc(), потому что array_diff_assoc() использует внутренний алгоритм для сравнения ключей и значений, в то время как эта функция использует пользовательскую функцию для сравнения ключей и значений.
array_diff_uassoc( $array1, $array2[, $array3..., callback $key_compare_func]);
Номер | Параметры и описание |
---|---|
1 | array1(обязательный) Массив для сравнения |
2 | array2(обязательный) Это массив, который нужно сравнить с первым массивом |
3 | array3(по желанию) Массив для сравнения с первым массивом |
4 | key_compare_func(обязательный) При сравнении, когда первый параметр меньше, равен или больше второго параметра, функция сравнения должна возвращать целое число, меньшее, равное или большее 0. |
Эта функция возвращает массив, который содержит все элементы array1, но не существует в других массивах.
Эта функция была最早 введена в PHP версии 5.0.0.
Попробуйте следующий пример. В этом примере, если ключ $input1 равен любому другому ключу в вводном массиве, функция сравнения ключей возвращает 0; если больше, то возвращает 1; если меньше, то возвращает -1.
Когда используется определенная функция для сравнения ключей, действительно, в обоих массивах есть ключ "a", поэтому он не появится в выводе. Следующий ключ "b" и "c" не находятся в втором массиве, поэтому они войдут в вывод. Другое соответствие 0 => "red" в выводе, так как ключ в втором параметре "red" равен 1:
<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } $input1 = array("a" => "зеленый", "b" => "коричневый", "c" => "голубой", "red"); $input2 = array("a" => "зеленый", "yellow", "red"); $result = array_diff_uassoc($input1, $input2, "key_compare_func"); print_r($result); ?>Проверим‹/›
Результат вывода:
Массив ( [b] => коричневый [c] => голубой [0] => red )
Попробуйте следующий пример. В этот раз "red" не будет в выводе, так как сейчас оба ключа равны 0.
<?php function key_compare_func($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } $input1 = array("a" => "зеленый", "b" => "коричневый", "c" => "голубой", "red"); $input2 = array("a" => "зеленый", "c" => "желтый", "red"); $result = array_diff_uassoc($input1, $input2, "key_compare_func"); print_r($result); ?>Проверим‹/›
Результат вывода:
Массив ( [b] => коричневый [c] => голубой )