Forum und email

array_udiff_assoc

(PHP 5)

array_udiff_assoc — Sammensætter forskellen på arrays med et tjek på nøglen, ved hjælp fra en callback funktion

Beskrivelse

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

array_udiff_assoc() returnerer et array som indeholder alle værdier fra array1 som ikke findes i nogen af de andre argumenter. Bemærk at nøglerne også bliver brugt til at finde forskellen modsat array_diff() og array_udiff(). Sammenligningen af data fra arrays bliver gjort ved en brugervalgt callback funktion. Dette er omvendt måden funktionen array_diff_assoc() arbejder på, da den bruger en intern funktion til sammenligning.

Example#1 array_udiff_assoc() eksempel

<?php
class cr {
    private 
$priv_member;
    function 
cr($val
    {
        
$this->priv_member $val;
    }
    
    function 
comp_func_cr($a$b
    {
        if (
$a->priv_member === $b->priv_member) return 0;
        return (
$a->priv_member $b->priv_member)? 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_assoc($a$b, array("cr""comp_func_cr"));
print_r($result);
?>

Ovenstående eksempel vil udskrive:

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

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

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

I vores eksempel ovenfor, kan du se at "1" => new cr(4) er til stede i begge array og derfor ikke i det resulterende array.

Til sammenligning bliver den tilføjede callback funktion brugt. Den skal returnere et tal mindre, samme som, eller større end null, hvis det første argument skal bestemmes til at være enten mindre end, det samme som, eller større end det andet argument.

Note: Bemærk også at denne funktion kun tjekker en dimension af et fler-dimensioneret array. Man kan selvfølgelig tjekke dybere i dimensionerne ved at bruge f.eks. array_udiff_assoc($array1[0], $array2[0], "some_comparison_func");.

Se også array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() og array_uintersect_uassoc().