Forum und email

array_udiff

(PHP 5)

array_udiff — Vypočíta rozdiel polí pomocou callback funkcie pre dátové porovnávanie.

Popis

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

array_udiff() vracia pole obsahujúce všetky hodnoty v array1 , ktoré sa nenachádzajú v žiadnom inom argumente. Upozorňujeme, že kľúče sa zachovávajú. Na porovnávanie dát je použitá data_compare_func . Musí vrátiť integer menší než, rovný, alebo väčší než nula, ak je prvý argument považovaný v poradí za menší než, rovný, alebo väčší než druhý. V tomto je odlišnosť od array_diff(), ktorá na porovnávanie dát používa vnútornú funkciu.

Example#1 array_udiff() príklad

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

Výsledok je:

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

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

)

Note: Dva prvky sa považujú za zhodné vtedy a len vtedy ak (string) $elem1 === (string) $elem2. Slovami: keď je reprezentácia reťazca rovnaká.

Note: Upozorňujeme vás na to, že funkcia kontroluje iba jednu dimenziu n-dimenzionálneho poľa. Samozrejme, môžete kontrolovať i hlbšie dimenzie pomocou array_udiff($array1[0], $array2[0], "data_compare_func");.

Tiež pozri array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff_assoc(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() a array_uintersect_uassoc().