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.

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

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

Hosting by: hurra.com
Generated: 2007-01-26 18:00:55