(PHP 5)
array_udiff — Computa la diferencia entre arrays, usando una llamada de retorno para la comparación de datos
Computa la diferencia de los arrays usando una función tipo llamada de retorno para la comparación de datos. Esto difiere de array_diff(), la cual usa una función interna para la comparación de datos.
array1
El primer array.
array2
El segundo array
data_compare_func
La función llamada de retorno para la comparación.
La función de comparación debe devolver un entero menor, igual o mayor que cero si el primer argumento se considera que sea respectivamente menor, igual o mayor que el segundo.
Devuelve un array que contiene todos los valores de array1
que no están presentes en ninguno de los otros argumentos.
Ejemplo #1 Ejemplo de array_udiff()
<?php
class cr {
private $miembro_privado;
function cr($val)
{
$this->miembro_privado = $val;
}
static function func_comp_cr($a, $b)
{
if ($a->miembro_privado === $b->miembro_privado) return 0;
return ($a->miembro_privado > $b->miembro_privado)? 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),);
$resultado = array_udiff($a, $b, array("cr", "func_comp_cr"));
print_r($resultado);
?>
El resultado del ejemplo sería:
Array ( [0.5] => cr Object ( [miembro_privado:private] => 12 ) [0] => cr Object ( [miembro_privado:private] => 23 ) )
Nota: Por favor note que esta función sólo analiza una dimensión de un array n-dimensional. Por supuesto, puede analizar dimensiones más profundas usando array_udiff($array1[0], $array2[0], "data_compare_func");.