array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'function.array-uintersect-uassoc.php', 1 => 'array_uintersect_uassoc', ), 'up' => array ( 0 => 'ref.array.php', 1 => 'Функции для работы с массивами', ), 'prev' => array ( 0 => 'function.array-uintersect-assoc.php', 1 => 'array_uintersect_assoc', ), 'next' => array ( 0 => 'function.array-uintersect.php', 1 => 'array_uintersect', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/array/functions/array-uintersect-uassoc.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(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), приведёт к внутреннему
приведению возвращаемого значения 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 )