array_udiff_assoc

(PHP 5, PHP 7, PHP 8)

array_udiff_assocComputa la diferencia entre arrays con una comprobación de indices adicional, compara la información mediante una función de llamada de retorno

Descripción

array_udiff_assoc(
    array$array1,
    array$array2,
    array$... = ?,
    callable$value_compare_func
): array

Computa la diferencia entre arrays con una comprobación de indices adicional, compara la información mediante una función de llamada de retorno.

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_assoc($array1[0], $array2[0], "alguna_func_comparacion");.

Parámetros

array1

El primer array.

array2

El segundo array.

value_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.

callback(mixed$a, mixed$b): int

Valores devueltos

array_udiff_assoc() devuelve un array que contiene todos los valores de array1 que no están presentes en ninguno de los demás argumentos. Observe que las claves se usan en la comparación a diferencia de array_diff() y array_udiff(). La comparación de la información de los arrays' se lleva a cabo usando una llamada de retorno proporcionada por el usuario. En este aspecto, el comportamiento es opuesto al de array_diff_assoc(), que usa una función interna para la comparación.

Ejemplos

Ejemplo #1 Ejemplo de array_udiff_assoc()

<?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;
}
}

$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_assoc($a, $b, array("cr", "comp_func_cr"));
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.

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_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
  • array_udiff() - Computa la diferencia entre arrays, usando una llamada de retorno para la comparación de datos
  • 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
  • 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() - Calcula la intersección de arrays con una comprobación de índices adicional, compara la información mediante una función de retrollamada
  • array_uintersect_uassoc() - Calcula la intersección de arrays con una comprobación de índices adicional, compara la información y los índices mediante funciones de retrollamada por separado
To Top