array_diff_uassoc

(PHP 5, PHP 7, PHP 8)

array_diff_uassocВычисляет расхождение массивов с дополнительной проверкой индекса через пользовательскую callback-функцию

Описание

array_diff_uassoc(array $array, array ...$arrays, callable $key_compare_func): array

Сравнивает значения массива array cо значениями массивов arrays и возвращает разницу. В этой функции, в отличие от функции array_diff(), ключи массива также участвуют в сравнении.

В отличие от функции array_diff_assoc(), в этой функции ключи сравнивает пользовательская callback-функция, а не встроенная.

Список параметров

array

Исходный массив

arrays

Массивы, с которыми идёт сравнение

key_compare_func

Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.

callback(mixed $a, mixed $b): int
Предостережение

Возвращение нецелых значений из функции сравнения, таких как число с плавающей точкой (float), приведёт к внутреннему приведению возвращаемого значения callback-функции к целому числу (int). Таким образом, значения 0.99 и 0.1 будут приведены к целочисленному значению 0, что позволит сравнить эти значения как равные.

Возвращаемые значения

Возвращает массив (array), содержащий все элементы массива array, которых нет в других сравниваемых массивах.

Примеры

Пример #1 Пример использования array_diff_uassoc()

В этом примере пара "a" => "green" существует в обоих содержится в обоих массивах, и поэтому её нет в выводе функции. Но пара 0 => "red" содержится в выводе функции, потому что значению "red" в первом массиве автоматически присваивается ключ 0, а во втором массиве тому же значению будет присвоен ключ 1, поскольку ключ 0 уже занят значением yellow.

<?php
function key_compare_func($a, $b)
{
if (
$a === $b) {
return
0;
}
return
$a <=> $b;
}

$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");.

Смотрите также

  • array_diff() - Вычисляет расхождение массивов
  • array_diff_assoc() - Вычисляет расхождение массивов с дополнительной проверкой индекса
  • array_udiff() - Вычисляет расхождение массивов, используя для сравнения callback-функцию
  • array_udiff_assoc() - Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений callback-функцию
  • array_udiff_uassoc() - Вычисляет расхождение в массивах с дополнительной проверкой индексов, используя для сравнения значений и индексов callback-функцию
  • array_intersect() - Вычисляет пересечение массивов
  • array_intersect_assoc() - Вычисляет пересечение массивов с дополнительной проверкой индекса
  • array_uintersect() - Вычисляет пересечение массивов, используя для сравнения значений callback-функцию
  • array_uintersect_assoc() - Вычисляет пересечение массивов с дополнительной проверкой индексов, используя для сравнения значений callback-функцию
  • array_uintersect_uassoc() - Вычисляет пересечение массивов с дополнительной проверкой индекса, используя для сравнения индексов и значений отдельные callback-функции

Добавить

Примечания пользователей 1 note

up
1
MD. ABU SAYEM
10 years ago
//array_diff_uassoc for multidimenssional array
$color_1=array('a'=>'white','b'=>'red','c'=>array('a'=>'green','b'=>'blue','c'=>'yellow'));
$color_2=array('a'=>'white','b'=>'red','c'=>array('a'=>'white','b'=>'red','c'=>'yellow'));

function key_compare($a,$b){
if($a===$b) return 0;
return($a>$b)?1:-1;
}
print_r(array_diff_uassoc($color_1['c'], $color_2['c'],"key_compare"));

//Output
Array
(
[a] => green
[b] => blue
)
To Top