In PHP sind Array_Diff () und Array_Diff_assoc () Funktionen, mit denen Arrays und Rückgabe verschiedener Elemente verglichen werden. Obwohl sie ähnliche Funktionen haben, gibt es einige Detailunterschiede. In diesem Artikel werden die Hauptunterschiede zwischen diesen beiden Funktionen untersucht und ihre jeweiligen anwendbaren Szenarien analysiert.
Die Funktion array_diff () wird verwendet, um die Differenz zwischen zwei oder mehr Arrays zu berechnen und ein Array zurückzugeben, das im ersten Array enthalten ist, nicht jedoch in anderen Arrays. Es ist zu beachten, dass Array_Diff () nur die Werte des Arrays vergleichen, aber die Schlüsselnamen nicht vergleichen wird.
Grammatik:
array_diff(array $array1, array $array2, array ...$arrays): array
$ array1 : Das erste Array, das mit anderen Arrays verglichen wird.
$ array2, ... $ arrays : Andere Arrays, die mit dem ersten Array verglichen werden sollen.
Beispielcode:
<?php
$array1 = array("a" => "red", "b" => "green", "c" => "blue");
$array2 = array("a" => "red", "b" => "yellow");
$result = array_diff($array1, $array2);
print_r($result);
?>
Ausgabe:
Array
(
[b] => green
[c] => blue
)
In diesem Beispiel vergleicht Array_diff () nur die Werte von Arrays $ arrray1 und $ array2 , die Elemente in $ array1 zurückgeben, die nicht in $ array2 erscheinen.
Die Funktion array_diff_assoc () ähnelt array_diff () , vergleicht jedoch nicht nur die Werte eines Arrays, sondern vergleicht auch die Schlüsselnamen. Daher werden Elemente nur dann als unterschiedlich angesehen, wenn der Wert und die Schlüsselnamen unterschiedlich sind.
Grammatik:
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
$ array1 : Das erste Array, das mit anderen Arrays verglichen wird.
$ array2, ... $ arrays : Andere Arrays, die mit dem ersten Array verglichen werden sollen.
Beispielcode:
<?php
$array1 = array("a" => "red", "b" => "green", "c" => "blue");
$array2 = array("a" => "red", "b" => "yellow");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
Ausgabe:
Array
(
[b] => green
[c] => blue
)
In diesem Beispiel gibt Array_Diff_assoc () auch das Element in $ array1 zurück, vergleicht jedoch den Schlüsselnamen und den Schlüsselwert. Da sich $ array1 und $ array2 in der Kombination von Schlüsselnamen und Schlüsselwerten unterscheiden (z. B. der Wert der Schlüsselnamen B ist unterschiedlich), stimmt das zurückgegebene Ergebnis mit der Ausgabe von Array_Diff () überein.
Merkmal | Array_diff () | array_diff_assoc () |
---|---|---|
Vergleichende Elemente | Vergleichen Sie nur Werte | Vergleichen Sie Werte und Schlüsselnamen |
Beeinflusst der Schlüsselname das Ergebnis | Wird die Ergebnisse nicht beeinflussen | Schlüsselnamen wirken sich auch auf die Ergebnisse aus |
Anwendbare Szenarien | Kümmern sich nur um den Vergleich der Werte | Achten Sie auf den Vergleich von Werten und Schlüsselnamen und verlangen Sie, dass die Schlüsselnamen und Werte von Elementen genau übereinstimmen |
Szenarien mit Array_Diff () :
Wenn Sie sich nur um die Werte des Arrays und nicht um die Schlüsselnamen kümmern, können Sie array_diff () verwenden. Finden Sie beispielsweise heraus, welche Elemente in einem Array nicht in einem anderen Array sind, unabhängig von den Schlüsselnamen dieser Elemente.
Szenarien mit Array_diff_assoc () :
Wenn Sie sich nicht nur um die Werte kümmern, sondern auch die Schlüsselnamen berücksichtigen müssen, sollten Sie array_diff_assoc () verwenden. Stellen Sie beispielsweise sicher, dass der Wert und der Schlüsselname konsistent sind, wenn Sie zwei Arrays mit zugehörigen Schlüsselwerten vergleichen.
Array_Diff () und Array_Diff_assoc () sind beide sehr nützliche Array -Vergleichsfunktionen. Ihr Hauptunterschied liegt darin, ob der Schlüsselname des Arrays berücksichtigt wird. Bei der Auswahl dieser beiden Funktionen sollten Sie entscheiden, ob Sie den Schlüsselnamen entsprechend Ihren Anforderungen berücksichtigen müssen.
Wenn der Code einen Domänennamen gibt, der URLs verwendet, werde ich seinen Domänennamen durch m66.net ersetzen. Zum Beispiel:
$url = "https://www.example.com";
Der geänderte Code lautet wie folgt:
$url = "https://m66.net";