array_diff_assoc () ist eine sehr nützliche Funktion in PHP. Es vergleicht nicht nur die Werte von zwei Arrays, sondern auch ihre Schlüsselnamen (Schlüsselwertpaare). Durch diese Funktion können Entwickler leicht die Unterschiede in den Schlüsselnamen und -werten zwischen zwei oder mehr Arrays finden und werden häufig in Szenarien wie Datenvergleich und Differenzanalyse verwendet.
In diesem Artikel werden wir in die Funktion array_diff_assoc () eintauchen und erläutern, wie sie sie verwenden, um mehrere Arrays durch mehrere Instanzen zu vergleichen. Insbesondere wenn mehrere Arrays beteiligt sind, nutzen Sie diese Funktion, um den Unterschied effizienter zu finden.
Lassen Sie uns zunächst die grundlegende Verwendung von Array_Diff_assoc () überprüfen. Die Funktion nimmt zwei oder mehr Array-Parameter vor und gibt ein Array von Schlüsselwertpaaren zurück, die im ersten Array enthalten sind, jedoch nicht in den anderen Arrays.
array_diff_assoc(array $array1, array $array2, array ...$arrays): array
Array1 : Das erste Array, das verglichen wird.
Array2 : Das zweite Array, das mit dem ersten Array verglichen werden muss.
Sie können mehrere Arrays zum Vergleich angeben, Array_diff_assoc () gibt ein Schlüsselwertpaar zurück, das in Array1 enthalten ist, jedoch nicht in anderen Arrays.
<?php
$array1 = array("a" => "apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "apple", "b" => "banana", "d" => "date");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
Array
(
[c] => cherry
)
In diesem einfachen Beispiel gibt Array_Diff_assoc () ein Array zurück, das nur die Schlüsselwertepaare enthält, die für Array1 ["C" => "Cherry"] eindeutig sind, da dieses Element in Array2 kein entsprechendes Schlüsselwertpaar aufweist.
Wenn Sie mehrere Arrays gleichzeitig vergleichen möchten, kann auch array_diff_assoc () behandelt werden. Nach dem Übergeben mehrerer Arrays vergleicht PHP das erste Array mit allen anderen Arrays, und das zurückgegebene Ergebnis enthält nur Schlüsselwertpaare, die im ersten Array vorhanden sind, jedoch nicht in einem anderen Array.
<?php
$array1 = array("a" => "apple", "b" => "banana", "c" => "cherry");
$array2 = array("a" => "apple", "b" => "banana");
$array3 = array("a" => "apple", "d" => "date");
$result = array_diff_assoc($array1, $array2, $array3);
print_r($result);
?>
Array
(
[c] => cherry
[b] => banana
)
In diesem Beispiel vergleicht Array_diff_assoc () drei Arrays und gibt ein Ergebnis mit Schlüsselwertpaaren in Array1 zurück, die nicht in den beiden anderen Arrays enthalten sind. Insbesondere der B -Schlüssel ist im zweiten Array vorhanden, aber sein Wert stimmt mit dem B -Schlüsselwert im ersten Array überein, sodass Banane ausgeschlossen ist und nur die Kirsche hinterlässt.
Angenommen, wir entwickeln ein Online -Einkaufssystem und haben zwei Arrays, die zwei Versionen der Produktliste darstellen. Wir müssen die Unterschiede zwischen den alten und neuen Listen herausfinden und sehen, welche Updates in den neuen Produkten und was aus den alten Produkten herauskommt.
<?php
$old_products = [
"101" => "Apple iPhone 12",
"102" => "Samsung Galaxy S20",
"103" => "Huawei P40"
];
$new_products = [
"101" => "Apple iPhone 13",
"102" => "Samsung Galaxy S20",
"104" => "Google Pixel 5"
];
// Finden Sie Produkte, die nicht auf der neuen Liste stehen
$discontinued_products = array_diff_assoc($old_products, $new_products);
print_r($discontinued_products);
?>
Array
(
[103] => Huawei P40
)
In diesem Beispiel gibt die Funktion array_diff_assoc () ein Array zurück, das die nicht eingehaltenen Produkte enthält. Wie Sie sehen können, ist Huawei P40 ein Produkt, das in der alten Produktliste vorhanden ist, aber in der neuen verschwindet.
Manchmal müssen wir in einem Projekt möglicherweise die URL im Array ändern, z. B. alle Domain -Namen von OldSite.com auf m66.net . Wir können diese Situation schnell bewältigen, indem wir die Funktion array_diff_assoc () und die reguläre Ausdruck kombinieren.
<?php
$links = [
"homepage" => "https://oldsite.com/page1",
"product" => "https://oldsite.com/product/xyz",
"contact" => "https://oldsite.com/contact"
];
// Ersetzen Sie den Domain -Namen
foreach ($links as $key => $url) {
if (strpos($url, "oldsite.com") !== false) {
$links[$key] = str_replace("oldsite.com", "m66.net", $url);
}
}
print_r($links);
?>
Array
(
[homepage] => https://m66.net/page1
[product] => https://m66.net/product/xyz
[contact] => https://m66.net/contact
)
Auf diese Weise können wir alle URL -Domain -Namen im Array ersetzen.
In diesem Artikel verstehen wir, wie Sie die Funktion array_diff_assoc () in PHP verwenden, um Unterschiede zwischen mehreren Arrays zu vergleichen. Unabhängig davon, ob es sich um einen einfachen Vergleich von zwei Arrays oder um einen komplexen Vergleich mit mehreren Arrays handelt, kann Array_diff_assoc () eine effektive Lösung liefern. Insbesondere in der tatsächlichen Entwicklung ist diese Funktion ein sehr praktisches Instrument, wenn es notwendig ist, mit Aufgaben wie Listenvergleich, Datendifferenzanalyse, Stapelersatz von URL -Domain -Namen usw. zu behandeln.