array_udiff_uassoc

(PHP 5)

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.

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.

Ejemplo 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), 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);
?>

El resultado es:

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.

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

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