English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP базовый курс

PHP продвинутый курс

PHP & MySQL

PHP справочник

Пример использования функции PHP array_diff_uassoc()

PHP Манифест функции массива

Определение и использование

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

Эта функция была最早 введена в 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] => голубой
)

PHP Манифест функции массива