(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 )