In PHP ist Array_Diff_Uassoc () eine sehr nützliche Array -Funktion, die die Differenz zwischen zwei Arrays berechnet und es Benutzern ermöglicht, benutzerdefinierte Vergleichsfunktionen zu verwenden, um Tasten von Arrays zu vergleichen. Viele Entwickler haben oft eine Frage, wenn diese Funktion verwendet wird:
Um diese Frage zu beantworten, müssen wir zunächst die grundlegende Verwendung von Array_Diff_Uassoc () und ihrem Verhalten verstehen.
Die Funktion array_diff_uassoc () wird verwendet, um die Differenz zwischen zwei Arrays zu berechnen, ähnlich wie bei array_diff () , aber im Gegensatz zu IT vergleicht Array_diff_uassoc () die Schlüssel und Werte des Arrays gleichzeitig. Sein Funktionsprototyp ist wie folgt:
array array_diff_uassoc ( array $array1 , array $array2 , callable $key_compare_func )
$ array1 : Dies ist das erste Array, das mit anderen Arrays verglichen wird.
$ array2 : Dies ist das Array, das verglichen werden muss, normalerweise ein oder mehrere Arrays.
$ key_compare_func : Dies ist eine benutzerdefinierte Rückruffunktion, die die Schlüssel von zwei Array -Elementen vergleicht. Die Funktion sollte zwei Schlüssel als Argumente akzeptieren und ein Vergleichsergebnis zurückgeben.
Wenn Sie auf den Kern der Frage zurückkehren, wird die Schlüsselreihenfolge des ursprünglichen Arrays bei der Verwendung von Array_Diff_Uassoc () erhalten?
Die Antwort lautet: Ja, Array_Diff_Uassoc () erhalten die Schlüsselreihenfolge des ursprünglichen Arrays . Bei der Durchführung einer Array -Differenzoperation wird Array_Diff_Uassoc () über das erste Array ( $ Array1 ) iteriert und Elemente zurückgegeben, die im zweiten Array in der ursprünglichen Schlüsselreihenfolge nicht vorhanden sind. Das heißt, die Schlüsselbestellung in $ array1 wird nicht unterbrochen.
Wir können dies mit dem folgenden Beispiel demonstrieren:
<?php
$array1 = [
0 => 'a',
1 => 'b',
2 => 'c',
3 => 'd'
];
$array2 = [
0 => 'a',
2 => 'c'
];
$result = array_diff_uassoc($array1, $array2, 'strcasecmp');
print_r($result);
?>
Array
(
[1] => b
[3] => d
)
Wie oben gezeigt, behält die Funktion array_diff_uassoc () erfolgreich die Reihenfolge der Schlüssel 1 und 3 im $ array1 -Array bei und gibt die Elemente zurück, die nicht in $ array2 existieren. Dies zeigt, dass sich die Schlüsselreihenfolge des ursprünglichen Arrays nicht geändert hat.
Dies liegt daran, dass die Implementierung von array_diff_uassoc () auf der Funktion von Array_Diff () von PHP basiert. Das von der Funktion array_diff () zurückgegebene Array ist in der Reihenfolge des ersten Array (d. H. $ array1 ) angeordnet, und Array_Diff_Uassoc () fügt die wichtige Vergleichsfunktion auf dieser Grundlage hinzu. Daher bewahrt es natürlich die Schlüsselreihenfolge des ursprünglichen Arrays.
Obwohl array_diff_uassoc () die Schlüsselreihenfolge des ursprünglichen Arrays behält, müssen wir immer noch auf die folgenden Punkte achten:
Wenn die Elemente im zweiten Array ( $ Array2 ) dieselben Schlüssel wie im ersten Array enthalten, werden diese Elemente unabhängig von ihrer Position im zweiten Array aus dem Differenzergebnis entfernt.
Wenn Sie das Ergebnisarray sortieren müssen, bietet PHP mehrere Funktionen wie KSORT () oder ASORT (), um die Ergebnisse nach Ihren Anforderungen zu sortieren.
Bei Verwendung von array_diff_uassoc () bleibt die Schlüsselreihenfolge des ursprünglichen Arrays erhalten. Dies ist nützlich für Situationen, in denen Sie sicherstellen müssen, dass die Schlüsselauftrag nicht durcheinander ist, insbesondere wenn Sie sich mit mehrdimensionalen Arrays oder assoziativen Arrays befassen, die eine gewisse Bestellung aufrechterhalten müssen.