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_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), 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);
?>
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().