In PHP sind Array_Diff () und Array_Diff_assoc () zwei häufig verwendete Funktionen zum Vergleich von Arrays. Ihre Funktionen ähneln denen von Anwendungsszenarien, aber es gibt einige signifikante Unterschiede in spezifischen Vergleiche. Das Verständnis des Unterschieds zwischen diesen beiden Funktionen hilft dabei, Array -Daten in der tatsächlichen Entwicklung genauer zu verarbeiten.
Array_diff ()
Array_Diff () wird verwendet, um zwei oder mehr Arrays zu vergleichen und Werte im ersten Array zurückzugeben, jedoch nicht in anderen Arrays. Es vergleicht sich basierend auf dem Wert unabhängig vom Schlüsselnamen.
Grammatik:
array_diff(array $array1, array $array2, array ...$arrays): array
Beispiel:
$array1 = [1, 2, 3, 4];
$array2 = [2, 3, 5];
$result = array_diff($array1, $array2);
print_r($result);
Ausgabe:
Array
(
[0] => 1
[3] => 4
)
In diesem Beispiel vergleicht Array_Diff () die Werte von $ array1 und $ array2 , und das Ergebnis ist ein Wert, der in $ array1 vorhanden ist, aber in $ array2 nicht vorhanden ist.
array_diff_assoc ()
Die Funktion von array_diff_assoc () ist ähnlich wie bei array_diff () , wird jedoch nicht nur den Wert beim Vergleichen berücksichtigt, sondern auch die Schlüsselnamen (Schlüssel) vergleicht. Das heißt, nur Elemente, deren Werte und Schlüsselnamen nicht gleich sind, werden als unterschiedlich angesehen.
Grammatik:
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
Beispiel:
$array1 = [1 => "apple", 2 => "banana", 3 => "cherry"];
$array2 = [1 => "apple", 2 => "grape"];
$result = array_diff_assoc($array1, $array2);
print_r($result);
Ausgabe:
Array
(
[2] => banana
[3] => cherry
)
In diesem Beispiel vergleicht Array_diff_assoc () die Werte und Schlüsselnamen von $ array1 und $ array2 . Obwohl 1 => "Apple" in beiden Arrays gleich ist, ignoriert Array_diff_assoc () dieses Element und sucht weiterhin nach Elementen mit unterschiedlichen Schlüsselnamen und entsprechenden Werten. Daher werden 2 => "Bananen" und 3 => "Kirsche" als unterschiedlich angesehen.
Funktion | Vergleichsstandards | Anwendbare Szenarien |
---|---|---|
Array_diff () | Vergleichen Sie nur Werte, es werden keine Schlüsselnamen berücksichtigt | Szenarien, in denen Vergleiche auf der Grundlage von Werten und der Ignorierung der Unterschiede in den Arrayschlüsselnamen erforderlich sind |
array_diff_assoc () | Vergleichen Sie Werte und Schlüsselnamen | Szenarien, in denen Werte und Schlüsselnamen verglichen werden müssen, z. |
Szenarien mit Array_Diff () :
Wenn Sie sich nur um den Wert des Arrays kümmern und sich nicht um die Schlüsselnamen kümmern, können Sie array_diff () verwenden. Beispielsweise haben Sie zwei Listen, die unterschiedliche Produkt -IDs enthalten, und es ist Ihnen nur wichtig, ob die Produkt -IDs konsistent sind, nicht über ihre Position oder ihre Schlüsselnamen im Array.
Beispielszenario:
Um beispielsweise die Produkt -ID herauszufinden, die sich in den beiden Produktlisten nicht überschneidet, lautet der Code wie folgt:
$list1 = [101, 102, 103, 104];
$list2 = [102, 104, 105];
$unique_ids = array_diff($list1, $list2);
print_r($unique_ids);
Ausgabe:
Array
(
[0] => 101
[2] => 103
)
Szenarien mit Array_diff_assoc () :
Wenn Sie nicht nur die Werte des Arrays vergleichen, sondern auch die Konsistenz der Schlüsselnamen sicherstellen, können Sie Array_Diff_assoc () verwenden. In zwei Benutzerlisten repräsentiert der Schlüsselname beispielsweise die ID des Benutzers und der Wert repräsentiert die Informationen des Benutzers. Sie müssen sicherstellen, dass die ID jedes Benutzers und die entsprechenden Informationen konsistent sind.
Beispielszenario:
Sie möchten beispielsweise zwei Benutzerinformationsarrays vergleichen und Elemente mit unterschiedlichen Schlüsselnamen und Werten finden:
$users1 = [1 => "Alice", 2 => "Bob", 3 => "Charlie"];
$users2 = [1 => "Alice", 2 => "Eve", 4 => "David"];
$diff_users = array_diff_assoc($users1, $users2);
print_r($diff_users);
Ausgabe:
Array
(
[2] => Bob
[3] => Charlie
)
Array_Diff () eignet sich für Szenarien, in denen sich nur darum kümmert, ob die Array -Werte gleich sind und die Unterschiede in den Schlüsselnamen ignorieren.
array_diff_assoc () gilt eher anwendbar, wenn prüfen muss, ob der Schlüsselname und der Wert konsistent sind.
Das Verständnis der Differenz- und Nutzungsszenarien zwischen diesen beiden Funktionen hilft Ihnen dabei, die am besten geeignete Funktion in der Entwicklung zu wählen, um Array -Daten zu verarbeiten und unnötige Fehler in den tatsächlichen Anwendungen zu vermeiden.