(PHP 5)
array_udiff — Вычисляет расхождение массивов, используя для сравнения callback-функцию
Вычисляет расхождение массивов, используя для сравнения данных callback-функцию. Это отличается от поведения array_diff(), которая использует встроенную функцию для сравнения данных.
Первый массив.
Второй массив.
Callback-функция, используемая для сравнения.
Callback-функция, предоставленная пользователем, которая будет использована для сравнения. Она должна возвращать целое число меньшее, равно или большее нуля, если первый аргумент, соответственно, меньше, равен или больше второго.
Возвращает массив, содержащий все элементы array1, которые не существуют в каком-либо из других аргументов.
Пример #1 Пример использования array_udiff()
<?php
class cr {
private $priv_member;
function cr($val)
{
$this->priv_member = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->priv_member === $b->priv_member) return 0;
return ($a->priv_member > $b->priv_member)? 1:-1;
}
}
$a = array("0.1" => new cr(9), "0.5" => new cr(12), 0 => new cr(23), 1=> new cr(4), 2 => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), 0 => new cr(3), 1=> new cr(4), 2 => new cr(-15),);
$result = array_udiff($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>
Результат выполнения данного примера:
Array ( [0.5] => cr Object ( [priv_member:private] => 12 ) [0] => cr Object ( [priv_member:private] => 23 ) )
Замечание: Обратите внимание, что эта функция обрабатывает только одно измерение многомерного массива. Разумеется, вы можете обработать более одного измерения, используя array_udiff($array1[0], $array2[0], "data_compare_func");.