(PHP 5, PHP 7, PHP 8)
array_uintersect_uassoc — Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Schlüssel mittels separaten Callbackfunktionen
$array1
,...$arrays
,$value_compare_func
,$key_compare_func
Ermittelt die Schnittmenge von Arrays mit zusätzlicher Indexprüfung, vergleicht Daten und Schlüssel mittels separaten Callbackfunktionen.
array1
Das erste Array.
arrays
Weitere Arrays.
value_compare_func
Die 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;
};
?>
key_compare_func
Callbackfunktion für den Schlüssel-Vergleich.
Gibt ein Array mit allen Werten aus array1
zurück, die ebenfalls in allen anderen Argumenten enthalten sind.
Beispiel #1 array_uintersect_uassoc() Beispiel
<?php
$array1 = array("a" => "grün", "b" => "braun", "c" => "blau", "rot");
$array2 = array("a" => "GRÜN", "B" => "braun", "gelb", "rot");
print_r(array_uintersect_uassoc($array1, $array2, "strcasecmp", "strcasecmp"));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [a] => grün [b] => braun )