Bei der Entwicklung von APIs müssen wir häufig den Inhalt von zwei Nutzlasten vergleichen, um deren Unterschiede zu bestimmen. Wenn Sie beispielsweise Benutzerinformationen aktualisieren, vergleichen Sie die Unterschiede zwischen neuen und alten Daten oder prüfen Sie, ob die zurückgegebenen Daten mit den erwarteten Daten übereinstimmen. PHP bietet eine sehr nützliche Funktion - Array_Diff_assoc , die uns helfen kann, die Unterschiede zwischen zwei Arrays zu vergleichen. Hier finden Sie eine detaillierte Erklärung, wie Sie diese Funktion verwenden, um den Nutzlastinhalt zu vergleichen.
Array_diff_assoc ist eine integrierte Funktion in PHP, die Schlüsselwertpaare von zwei Arrays vergleicht, um Elemente zu finden, die im ersten Array, jedoch nicht im zweiten Array, vorhanden sind. Im Gegensatz zu Array_DIFF vergleicht Array_Diff_assoc nicht nur Werte, sondern auch Schlüsseldamen. Das Element wird nur dann als anders angesehen, wenn der Schlüsselname und der Wert nicht übereinstimmen.
array_diff_assoc(array $array1, array $array2): array
$ array1 : Das erste Array als Referenzarray zum Vergleich.
$ array2 : Das zweite Array im Vergleich zum ersten Array.
Diese Funktion gibt ein Array zurück, das Elemente enthält, die in $ Array1 , jedoch nicht in $ array2 , vorhanden sind.
Angenommen, wir haben zwei Nutzlasten im JSON -Format, die die alten bzw. neuen Benutzerdaten im Format wie folgt darstellen:
{
"user_id": 12345,
"name": "Zhang San",
"email": "zhangsan@m66.net",
"phone": "1234567890"
}
{
"user_id": 12345,
"name": "Zhang San",
"email": "zhangsan@m66.net",
"phone": "0987654321"
}
Wir möchten die Datenunterschiede in diesen beiden JSON-Nutzlasten vergleichen und überprüfen, ob ihre Schlüsselwertpaare konsistent sind. Hier können wir array_diff_assoc verwenden, um es zu implementieren.
Zunächst müssen wir diese beiden JSON -Daten in PHP -Arrays konvertieren, bevor wir sie vergleichen können.
<?php
// Alte Daten
$old_payload = '{"user_id": 12345, "name": "Zhang San", "email": "zhangsan@m66.net", "phone": "1234567890"}';
// Neue Daten
$new_payload = '{"user_id": 12345, "name": "Zhang San", "email": "zhangsan@m66.net", "phone": "0987654321"}';
// Dekodierung JSON Die Daten sind PHP Array
$old_data = json_decode($old_payload, true);
$new_data = json_decode($new_payload, true);
// 输出Array查看结果
var_dump($old_data);
var_dump($new_data);
?>
Mit der Funktion array_diff_assoc können wir leicht den Unterschied zwischen zwei Arrays finden.
<?php
// Holen Sie sich den Unterschied
$differences = array_diff_assoc($old_data, $new_data);
// Ausgangsunterschied
if (!empty($differences)) {
echo "Datenunterschiede:\n";
print_r($differences);
} else {
echo "Daten konsistent,Kein Unterschied。\n";
}
?>
Datenunterschiede:
Array
(
[phone] => 1234567890
)
Wie oben gezeigt, zeigt das Ergebnis, dass der Wert des Telefons in den alten Daten und den neuen Daten unterschiedlich ist und den Telefonwert von 1234567890 in den alten Daten zeigt. Dies ist genau der Unterschied, den wir hoffen, den Vergleich zu erreichen.
API -Debugging : Bei der Entwicklung einer API müssen Sie möglicherweise die von der Schnittstelle zurückgegebenen Daten mit den erwarteten Ergebnissen vergleichen. Verwenden Sie Array_Diff_assoc , um die Unterschiede schnell anzusehen und Entwicklern zu helfen, Probleme zu finden.
Datenaktualisierung : Im Szenario des User -Profil -Update kann diese Methode verwendet werden, um die Unterschiede zwischen neuen und alten Daten zu vergleichen, um festzustellen, welche Felder geändert haben.
Protokollierung : Wenn Sie das Benutzerverhalten oder Datenänderungsprotokolle aufzeichnen, verstehen Sie den spezifischen Inhalt von Datenänderungen, um die nachfolgende Analyse zu erleichtern.
Verwandte Tags:
API