(PHP 5)
array_udiff_assoc — Computa la diferencia entre matrices con un chequeo de índices adicional, comparando los datos con una llamada de retorno
array_udiff_assoc() devuelve un array que contiene todos los valores de matriz1 que no están presentes en ninguno de los otros argumentos. Note que las claves son usadas en la comparación, a diferencia de array_diff() y array_udiff(). La comparación entre datos de las matrices es realizada usando una llamada de retorno especificada por el usuario. En este sentido, el comportamiento de esta función es opuesto al de array_diff_assoc(), la cual usa una función interna para la comparación.
Example#1 Ejemplo de array_udiff_assoc()
<?php
class cr {
private $miembro_privado;
function cr($val)
{
$this->miembro_privado = $val;
}
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_assoc($a, $b, array("cr", "func_comp_cr"));
print_r($resultado);
?>
El resultado del ejemplo seria:
Array ( [0.1] => cr Object ( [miembro_privado:private] => 9 ) [0.5] => cr Object ( [miembro_privado:private] => 12 ) [0] => cr Object ( [miembro_privado:private] => 23 ) )
En nuestro ejemplo anterior puede observar la pareja "1" => new cr(4) presente en ambas matrices y por lo tanto no hace parte de la salida de la función.
Para la comparación es usada la llamada de retorno entregada por el usuario. Ésta debe devolver un entero menor que, igual, o mayor que cero si el primer argumento es considerado como menor, igual, o mayor que el segundo, respectivamente.
Note: Por favor note que esta función sólo analiza una dimensión de una matriz n-dimensional. Por supuesto, puede analizar dimensiones más profundas usando, por ejemplo, array_udiff_assoc($matriz1[0], $matriz2[0], "func_alguna_comparacion");.
Vea también array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() y array_uintersect_uassoc().