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

add a note add a note

User Contributed Notes 2 notes

up
-6
m dot ario dot huq at gmail dot com
6 years ago
The example #1 can be modified (PHP 7 or higher) by using Spaceship operator (<=>):

<?php
//…
static function comp_func_cr($a, $b)
{
    return
$a->priv_member <=> $b->priv_member;
}
//…
?>
up
-12
tmquang6805 at yahoo dot com
10 years ago
Difference between array_udiff_assoc() and array_diff_assoc()

- array_udiff_assoc(): Compares the DATA with the user supplied callback function
- array_diff_assoc(): Compares the INDEX with the user supplied callback function
To Top