(PHP 5, PHP 7, PHP 8)
array_uintersect_uassoc — Вычисляет пересечение массивов с дополнительной проверкой индекса, используя для сравнения индексов и значений отдельные callback-функции
$array1
,...$arrays
,$value_compare_func
,$key_compare_func
Вычисляет пересечение массивов с дополнительной проверкой индекса, используя для сравнения ключей и значений отдельные callback-функции. То есть значения сравниваются одной callback-функцией, а индексы — другой.
array1
Первый массив.
arrays
Дополнительные массивы.
value_compare_func
Функция сравнения должна возвращать целое, которое меньше, равно или больше нуля, если первый аргумент является соответственно меньшим, равным или большим, чем второй.
При возврате из функции сравнения нецелых значений наподобие float
PHP внутренне приведёт значение, которое возвращает callback-функции, к типу int.
Поэтому значения наподобие 0.99
и 0.1
приводятся к целочисленному значению 0
и сравниваются как равные.
Callback-функция сортировки должна обрабатывать любое значение из любого массива в любом порядке независимо от первоначального порядка. Причина состоит в том, что каждый отдельный массив вначале сортируется, а затем сравнивается с другими массивами. Например:
<?php
$arrayA = ["string", 1];
$arrayB = [["value" => 1]];
// $item1 and $item2 can be any of "string", 1 or ["value" => 1]
$compareFunc = static function ($item1, $item2) {
$value1 = is_string($item1) ? strlen($item1) : (is_array($item1) ? $item1["value"] : $item1);
$value2 = is_string($item2) ? strlen($item2) : (is_array($item2) ? $item2["value"] : $item2);
return $value1 <=> $value2;
};
?>
key_compare_func
Callback-функция для сравнения ключей.
Возвращает массив (array),
содержащий все элементы аргумента array1
,
которые есть в каждом другом аргументе.
Пример #1 Пример использования функции array_uintersect_uassoc()
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_uintersect_uassoc($array1, $array2, "strcasecmp", "strcasecmp"));
?>
Результат выполнения приведённого примера:
Array ( [a] => green [b] => brown )