Matrices
PHP Manual

array_udiff_uassoc

(PHP 5)

array_udiff_uassoc — Computa la diferencia entre matrices con un chequeo de índices adicional, comparando los datos y los índices con una llamada de retorno

Descripción

array array_udiff_uassoc ( array $matriz1 , array $matriz2 [, array $ ... ], callback $func_comparacion_datos , callback $func_comparacion_claves )

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.

Example#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), => new cr(23), 1=> new cr(4), => new cr(-15),);
$b = array("0.2" => new cr(9), "0.5" => new cr(22), => new cr(3), 1=> new cr(4), => new cr(-15),);

$resultado array_udiff_uassoc($a$b, array("cr""func_comp_cr"), array("cr""func_comp_claves"));
print_r($resultado);
?>

El resultado del ejemplo seria:

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

Note: 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");.

Vea también array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff(), array_udiff_assoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() y array_uintersect_uassoc().


Matrices
PHP Manual