(PHP 5, PHP 7)
array_diff_uassoc — Calcula la diferencia entre arrays con un chequeo adicional de índices que se realiza por una función de devolución de llamada suministrada por el usuario
$array1
, array $array2
[, array $...
], callable $key_compare_func
) : array
Compara array1
contra array2
y
retorna la diferencia. A diferencia de array_diff() la keys del
array se utilizan en la comparación.
A diferencia de array_diff_assoc() una función de devolución de llamada suministrada por el usuario se utiliza para la comparación de los índices, no una función interna.
array1
Array a comparar
array2
Un array contra el cual comparar
...
Más arrays contra los cuales comparar
key_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. Observe que antes de PHP 7.0.0 este entero debía estar en el rango de -2147483648 a 2147483647.
Retorna un array conteniendo todas las entradas del
array1
que no están presentes en ninguno de los otros arrays.
Ejemplo #1 Ejemplo de array_diff_uassoc()
El par "a" => "green" está presente en ambos arrays y por lo tanto no está en la salida de la función. A diferencia de ésto, el par 0 => "red" está en la salida ya que en el segundo argumento "red" tiene una key que es 1.
<?php
function key_compare_func($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>
El resultado del ejemplo sería:
Array ( [b] => brown [c] => blue [0] => red )
La igualdad de 2 índices es chequeada por la función de devolución de llamada suministrada por el usuario.
Nota:
Esta función sólo comprueba una dimensión de un array n-dimensional. Por supuesto, se pueden comprobar dimensiones más profundas mediante, por ejemplo, array_diff_uassoc($array1[0], $array2[0], "key_compare_func");.