Forum und email

array_udiff

(PHP 5)

array_udiff — Sammensætter forskellen mellem arrays ved brug af en callback funktion ved værdierne.

Beskrivelse

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

array_udiff() returnerer et array som indeholder alle værdierne fra array1 som ikke er til stede i nogen af de andre argumenter. Nøglerne følger direkte med deres værdier. For sammenligningen af data bliver data_compare_func 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. Dette virker modsat array_diff() som bruger en intern php funktion til sammenligningen af værdierne.

Example#1 array_udiff() 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($a$b, array("cr""comp_func_cr"));
print_r($result);
?>

Ovenstående eksempel vil udskrive:

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

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

)

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 array_udiff($array1[0], $array2[0], "data_compare_func");.

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