Function.array-udiff
Aus PHP-Wiki
array_udiff — Ermittelt den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Datenvergleich
Beschreibung
array array_udiff ( array $array1 , array $array2 [, array $ ... ],callback $data_compare_func )
array_udiff() gibt ein Array mit allen Werten von
array1
, welche in keinem der anderen Argumente
enthalten sind, zurück. Beachten Sie, dass Schlüssel erhalten bleiben.
Für den Vergleich der Daten wird data_compare_func
herangezogen. 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. Dies ist anders
als array_diff(), in der eine eingebaute Funktion
für den Vergleich der Indizes verwendet wird.
Beispiel #1 array_udiff() Beispiel
<?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($a, $b, array("cr", "comp_func_cr"));
print_r($result);
?>
Das oben gezeigte Beispiel erzeugt folgende
Ausgabe:
Array
(
[0.5] => cr Object
(
[priv_member:private] => 12
)
[0] => cr Object
(
[priv_member:private] => 23
)
)
Hinweis:
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($array1[0], $array2[0], "data_compare_func");
verwenden.
Siehe auch
array_diff(),
array_diff_assoc(),
array_diff_uassoc(),
array_udiff_assoc(),
array_udiff_uassoc(),
array_intersect(),
array_intersect_assoc(),
array_uintersect(),
array_uintersect_assoc() und
array_uintersect_uassoc().