This functionality is now implemented in the PEAR package PHP_Compat.
More information about using this function without upgrading your version of PHP can be found on the below link:
http://pear.php.net/package/PHP_Compat
array_udiff_uassoc
(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
Descripción
$array1
, array $array2
[, array $ ...
], callable $data_compare_func
, callable $key_compare_func
)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().
Parámetros
-
array1 -
El primer array.
-
array2 -
El segundo array.
-
data_compare_func -
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.
-
key_compare_func -
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.
Valores devueltos
Devuelve un array que contiene todos los valores de
array1 que no están presentes en ningno de los demás
argumentos.
Ejemplos
Ejemplo #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.
Notas
Nota: 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");.
Ver también
- array_diff() - Calcula la diferencia entre arrays
- array_diff_assoc() - Calcula la diferencia entre arrays con un chequeo adicional de índices
- array_udiff() - Computa la diferencia entre arrays, usando una llamada de retorno para la comparación de datos
- array_udiff_assoc() - Computa la diferencia entre arrays con una comprobación de indices adicional, compara la información mediante una función de llamada de retorno
- array_intersect() - Calcula la intersección de arrays
- array_intersect_assoc() - Calcula la intersección de arrays con un chequeo adicional de índices
- array_uintersect() - Computa una intersección de arrays, compara la información mediante una función de llamada de retorno
- array_uintersect_assoc() - Computa la intersección de arrays con una comprobación de índices adicional, compara la información mediante una función de llamada de retorno
- array_uintersect_uassoc() - Computa la intersección de arrays con una comprobación de índices adicional, compara la información y los índices mediante funciones de llamada de retorno
