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;
}
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;
}
static 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),);
$resultado = array_udiff_uassoc($a, $b, array("cr", "func_comp_cr"), array("cr","func_comp_claves"));
print_r($resultado);
?>
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");_