array_udiff_uassoc
Ermittelt den Unterschied zwischen Arrays mit zusätzlicher Indexprüfung,
vergleicht Daten und Indizes mittels einer Callbackfunktion
Beschreibung
arrayarray_udiff_uassoc
arrayarray1
arrayarray2
array ...
callbackdata_compare_func
callbackkey_compare_func
array_udiff_uassoc gibt ein Array mit allen Werten von
array1, welche in keinem der anderen Argumente
enthalten sind, zurück. Beachten Sie, dass Schlüssel anders als von
array_diff und array_udiff für
den Vergleich herangezogen werden. Der Vergleich der Arrayinhalte wird
von der benutzerdefinierten Callbackfunktion
data_compare_func durchgeführt. In dieser
Hinsicht ist das Verhalten anders als jenes von
array_diff_assoc, welche eine eingebaute
Vergleichsfunktion verwendet. Der Vergleich der Schlüssel (Indizes) wird
von der Funktion key_compare_func durchgeführt.
Dieses verhalten Unterschiedet sich von array_udiff_assoc
darin, dass Letztere die Indizes mit einer eingebauten Funktion vergleicht.
array_udiff_uassoc Beispiel
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);
?>
]]>
&example.outputs;
cr Object
(
[priv_member:private] => 9
)
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)
]]>
In unserem Beispiel sehen Sie, dass das "1" => new cr(4)
Paar in beiden Arrays enthalten ist und daher nicht in der Ausgabe der
Funktion auftaucht. Denken Sie daran, dass Sie zwei Callbackfunktionen
angeben müssen.
Für den Vergleich wird die benutzerdefinierte Funktion verwendet.
Diese muss einen Integer kleiner als, genau gleich oder
größer als Null zurückgeben, wenn das erste Argument entsprechend als
kleiner, gleich oder größer als das Zweite betrachtet wird.
Bitte beachten Sie, dass diese Funktion nur eine Dimension eines
n-dimensionalen Arrays überprüft. Natürlich können Sie tiefere Dimensionen
prüfen, indem Sie
array_udiff_uassoc($array1[0], $array2[0], "data_compare_func",
"key_compare_func"); verwenden.
Siehe auch
array_diff,
array_diff_assoc,
array_diff_uassoc,
array_udiff,
array_udiff_assoc,
array_intersect,
array_intersect_assoc,
array_uintersect,
array_uintersect_assoc und
array_uintersect_uassoc.