array_udiff_uassoc -- Computa la diferencia entre matrices con un chequeo de
índices adicional. Los datos son comparados usando una
llamada de retorno. El chequeo de índice es realizado por
una llamada de retorno también.
array_udiff_uassoc() 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 de los
datos de las matrices es realizada usando una llamada de retorno
entregada por el
usuario: func_comparacion_datos. En este
sentido, su comportamiento es el opuesto del
de array_diff_assoc(), quien usa una
función interna para la comparación. La
comparación de claves (índices) es realizada
también por la llamada de
retorno func_comparacion_claves. Este
comportamiento contrasta con lo que
hace array_udiff_assoc(), ya que ésta
compara los índices usando una función interna.
Ejemplo 1. Ejemplo
de array_udiff_uassoc()
<?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; }
function func_comp_claves($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),);
En nuestro ejemplo anterior, puede ver que la pareja "1"
=> new cr(4) está presente en ambas matrices,
y por lo tanto no hace parte de la salida de la
función. Tenga en cuenta que debe especificar 2 llamadas
de retorno.
Para la comparación, se usa la llamada de retorno indicada
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.
Nota:
Por favor note que esta función únicamente chequea
una dimensión de una matriz n-dimensional. Por supuesto,
puede chequear dimensiones más profundas usando, por
ejemplo, array_udiff_uassoc($matriz1[0], $matriz2[0],
"func_comparacion_datos", "func_comparacion_claves");.