array_udiff_uassoc

(PHP 5)

array_udiff_uassoc -- Vypočíta rozdiel polí s dodatočnou kontrolou indexov. Dáta sa porovnávajú pomocou callback funkcie. Callback funkcia tiež vykoná indexovú kontrolu

Popis

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

array_udiff_uassoc() vracia array obsahujúce všetky hodnoty z array1, ktoré sa nenachádzajú v žiadnom inom argumente. Upozorňujeme na to, že kľúče sú použité v porovnávaní, na rozdiel od array_diff() a array_udiff(). Porovnávanie dát polí sa vykoná pomocou užívateľom určenej callback funkcie : data_compare_func. V tomto aspekte je správanie opačné správaniu array_diff_assoc(), ktorá na porovnávanie používa vnútornú funkciu. Porovnávanie kľúčov (indexov) sa vykoná tiež pomocou callback funkcie key_compare_func. Toto správanie je odlišné od array_udiff_assoc(), nakoľko to druhé porovnáva indexy pomocou internej funkcie.

Príklad 1. array_udiff_uassoc() 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;
    }
    
    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), 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),);

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

Výsledok je:

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

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

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

V našom príklade hore vidíte, že pár "1" => new cr(4) sa nachádza v oboch poliach, a teda nie je vo výstupe z funkcie. Majte na pamäti, že musíte určiť 2 callback funkcie.

Pre porovnávanie sa používa užívateľom určená callback funkcia. Musí vrátiť integer menší než, rovný, alebo väčší než nula, ak je prvý argument považovaný v poradí za menší, rovný, alebo väčší než druhý.

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

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