(PHP 5)
array_udiff_uassoc — Computa la diferencia entre arrays con una verificación de índices adicional, compara la información y los índices mediante una función de llamada de retorno
Computa la diferencia entre arrays con una verificación de índices adicional, compara la información y los índices mediante una función de llamada de retorno.
Observe que las claves son usadas en la comparación, a diferencia de array_diff() y array_udiff().
El primer array.
El segundo array.
La función de llamada de retorno de comparación.
La función de llamada de retorno proporcionada por el usuario se usa para la comparación. Debe devolver un valor de tipo integer menor que, igual, o mayor que cero si el primer argumento es considerado, respectivamente, menor que, igual, o mayor que el segundo.
La comparación de la información de los arrays se lleva a cabo usando una llamada de retorno proporcionada por el usuario : data_compare_func. En este aspecto, el comportamiento es opuesto al de array_diff_assoc(), que usa una función interna para la comparación.
La comparación de las claves (índices) se hace también mediante la función de llamada de retorno key_compare_func. Este comportamiento es diferente del de array_udiff_assoc(), ya que esta última compara los índices usando una función interna.
Devuelve un array que contiene todos los valores de array1 que no están presentes en ningno de los demás argumentos.
Example #1 Ejemplo de array_udiff_uassoc()
<?php
class cr {
private $miembro_privado;
function cr($val)
{
$this->miembro_privado = $val;
}
static function comp_func_cr($a, $b)
{
if ($a->miembro_privado === $b->miembro_privado) return 0;
return ($a->miembro_privado > $b->miembro_privado)? 1:-1;
}
static function comp_func_key($a, $b)
{
if ($a === $b) return 0;
return ($a > $b)? 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_uassoc($a, $b, array("cr", "comp_func_cr"), array("cr", "comp_func_key"));
print_r($resultado);
?>
El resultado del ejemplo sería:
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 el ejemplo de arriba se ve que el par "1" => new cr(4) está presente en ambos arrays, y que, de esta manera, no está en la salida de la función. Recuerde que debe de proporcionar 2 funciones de llamada de retorno.
Note: Por favor, observe que esta función sólo comprueba una dimensión de un array n-dimensional. Por supuesto, se pueden comprobar dimensiones más profundas usando, por ejemplo, array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");.