Funções para Array
PHP Manual

array_udiff_uassoc

(PHP 5)

array_udiff_uassocComputa a diferença entre arrays com checagem adicional de índice, compara dados e índices por uma função de callback

Descrição

array array_udiff_uassoc ( array $array1 , array $array2 [, array $ ... ], callback $data_compare_func , callback $key_compare_func )

Computa a diferença entre arrays com checagem adicional de índice, compara dados e índices por uma função de callback.

Note que as chaves são usadas na comparação, ao contrário de array_diff() e array_udiff().

Parâmetros

array1

O primeiro array.

array2

O segundo array.

data_compare_func

A função de comparação de callback.

A função de callback fornecida pelo usuário é usada para comparação. Ela deve retornar um inteiro menor que, igual a, ou maior que zero se o primeiro argumento é considerado respectivamente menor que, igual a, ou maior que o segundo.

A comparação dos dados dos arrays é executada usando uma função de callback fornecida pelo usuário: data_compare_func. Neste aspecto o comportamento é oposto ao comportamente de array_diff_assoc() que usa função interna para comparação.

key_compare_func

A comparação das chaves (índices) é feita também por função de callback: key_compare_func. Este comportamento é contrário ao que array_udiff_assoc() faz, já que esta compara os índices usando uma função interna.

Valor Retornado

Retorna um array contendo todos os valores de array1 que não estão presentes em qualquer dos outros argumentos.

Exemplos

Exemplo #1 Exemplo de array_udiff_uassoc()

<?php
class cr {
    private 
$priv_member;
    function 
cr($val)
    {
        
$this->priv_member $val;
    }

    static function 
comp_func_cr($a$b)
    {
        if (
$a->priv_member === $b->priv_member) return 0;
        return (
$a->priv_member $b->priv_member)? 1:-1;
    }

    static function 
comp_func_key($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),);

$result array_udiff_uassoc($a$b, array("cr""comp_func_cr"), array("cr""comp_func_key"));
print_r($result);
?>

O exemplo acima irá imprimir:

Array
(
    [0.1] => cr Object
        (
            [priv_member:private] => 9
        )

    [0.5] => cr Object
        (
            [priv_member:private] => 12
        )

    [0] => cr Object
        (
            [priv_member:private] => 23
        )
)

Em nosso exemplo acima você vê que o par "1" => new cr(4) está presente em ambos os arrays e assim não está na saída da função. Mantenha em mente que você deve fornecer duas funções de callback.

Notas

Nota: Por favor note que esta função somente checa uma dimensão de um array n-dimensional. É claro que você pode checar dimensões mais profundas usando, por exemplo, array_udiff_uassoc($array1[0], $array2[0], "data_compare_func", "key_compare_func");.

Veja Também


Funções para Array
PHP Manual