array_udiff_assoc
(PHP 5)
array_udiff_assoc — Vypočíta rozdiel polí s dodatočnou kontrolou indexov. Dáta sa porovnávajú pomocou callback funkcie.
Popis
array_udiff_assoc() vracia array obsahujúce všetky hodnoty z array1 , ktoré sa nenachádzajú v žiadnom inom argumente. Upozorňujeme na to, že kľúče sa používajú 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. V tomto aspekte je správanie opačné správaniu array_diff_assoc(), ktorá na porovnávanie používa vnútornú funkciu.
Example#1 array_udiff_assoc() 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), 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_assoc($a, $b, array("cr", "comp_func_cr"));
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 vitíte, že pár "1" => new cr(4) sa nachádza v oboch poliach, a teda nie je vo výstupe z funkcie.
Na porovnávanie je použitá 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ší než, rovný, alebo väčší než druhý.
Note: Upozorňujeme vás na to, že táto funkcia kontroluje iba jednu dimenziu n-dimezionálneho poľa. Samozrejme, môžete kontrolovať i hlbšie dimenzie napr. pomocou array_udiff_assoc($array1[0], $array2[0], "some_comparison_func");.
Tiež pozri array_diff(), array_diff_assoc(), array_diff_uassoc(), array_udiff(), array_udiff_uassoc(), array_intersect(), array_intersect_assoc(), array_uintersect(), array_uintersect_assoc() a array_uintersect_uassoc().