(PHP 5, PHP 7, PHP 8)
array_udiff — Ermittelt den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Datenvergleich
Ermittelt den Unterschied zwischen Arrays mittels einer Callbackfunktion für den Datenvergleich. Dies ist anders als bei array_diff(), das eine interne Funktion zum Vergleichen der Daten verwendet.
arrayDas erste Array.
arraysArrays zum Vergleichen.
value_compare_funcDie Vergleichsfunktion muss einen Integer kleiner als, gleich oder größer als Null zurückgeben, wenn das erste Argument respektive kleiner, gleich oder größer als das zweite ist.
Wenn die Vergleichsfunktion nicht-ganzzahlige Werte
zurückgibt, z. B. vom Typ float, wird der Rückgabewert des
Callbacks intern in den Typ int umgewandelt. Werte wie
0.99 und 0.1 werden also beide in
einen Integer-Wert von 0 umgewandelt, wodurch diese Werte
als gleichwertig eingestuft werden.
Das Sortier-Callback muss alle Werte aus allen Arrays in beliebiger Reihenfolge verarbeiten, unabhängig von der Reihenfolge, in der sie ursprünglich bereitgestellt wurden. Das liegt daran, dass jedes einzelne Array zuerst sortiert wird, bevor es mit anderen Arrays verglichen wird. Zum Beispiel:
<?php
$arrayA = ["string", 1];
$arrayB = [["value" => 1]];
// $item1 und $item2 können "string", 1 oder ["value" => 1] sein.
$compareFunc = static function ($item1, $item2) {
$value1 = is_string($item1) ? strlen($item1) : (is_array($item1) ? $item1["value"] : $item1);
$value2 = is_string($item2) ? strlen($item2) : (is_array($item2) ? $item2["value"] : $item2);
return $value1 <=> $value2;
};
?>
Gibt ein Array zurück, das alle Werte von array
enthält, die nicht in einem der anderen Argumente vorhanden sind.
Beispiel #1 array_udiff() Beispiel mit stdClass Objekten
<?php
// Die zu vergleichenden Arrays
$array1 = array(new stdClass, new stdClass,
new stdClass, new stdClass,
);
$array2 = array(
new stdClass, new stdClass,
);
// Setze einige Eigenschaften für jedes Objekt
$array1[0]->width = 11; $array1[0]->height