In PHP ist Array_Diff_Uassoc eine sehr nützliche Funktion, die die Unterschiede zwischen zwei Arrays vergleicht und den Differenzenteil über benutzerdefinierte Vergleichsregeln für Schlüsselname zurückgibt. Nach dem Konvertieren von JSON -Daten in ein Array können wir diese Funktion verwenden, um unterschiedliche Vergleiche zwischen verschiedenen JSON -Daten durchzuführen.
In diesem Artikel wird vorgestellt, wie die Funktion array_diff_uassoc verwendet, JSON -Daten zuerst in ein PHP -Array umwandelt und diese Funktion dann mit diesen Funktionen die Unterschiede zwischen den beiden Arrays vergleichen kann.
Zunächst müssen wir die JSON -Daten in ein PHP -Array umwandeln. In PHP können wir die Funktion JSON_DECODE verwenden, um diese Aufgabe zu erledigen, und den Parameter wahr festlegen, um sicherzustellen, dass ein assoziatives Array zurückgegeben wird, kein Objekt.
$jsonData1 = '{"name": "John", "age": 30, "city": "New York"}';
$jsonData2 = '{"name": "Jane", "age": 30, "city": "Los Angeles"}';
$array1 = json_decode($jsonData1, true);
$array2 = json_decode($jsonData2, true);
Im obigen Code definieren wir zwei JSON -Strings $ JSondata1 und $ jSondata2 und konvertieren sie dann in assoziative Arrays $ Array1 und $ array2 .
Als nächstes verwenden wir die Funktion array_diff_uassoc , um die Unterschiede zwischen den beiden Arrays zu vergleichen. Die Funktion der Funktion array_diff_uassoc ist, dass sie nicht nur die Werte des Arrays vergleicht, sondern auch die Schlüsselnamen des Arrays basierend auf der vom Benutzer bereitgestellten Vergleichsfunktion vergleicht.
array_diff_uassoc(array $array1, array $array2, callable $key_compare_func): array
$ array1 und $ array2 : Zwei Arrays, die verglichen werden müssen.
$ key_compare_func : Eine Rückruffunktion, in der angegeben ist, wie Sie Schlüssel eines Arrays vergleichen.
In diesem Beispiel möchten wir Schlüssel in einem Array nach benutzerdefinierten Vergleichsregeln vergleichen und die Unterschiede zwischen Arrays herausfinden.
// Benutzerdefinierte Vergleichsfunktionen,Vergleichen Sie die Schlüsselnamen
function compareKeys($key1, $key2) {
return strcmp($key1, $key2); // Vergleiche nach Dictionary Order
}
// verwenden array_diff_uassoc Vergleiche Arrays
$diff = array_diff_uassoc($array1, $array2, 'compareKeys');
print_r($diff);
In diesem Beispiel definieren wir eine einfache Funktion "CompareKeys" , um zwei Schlüsselnamen in der Wörterbuchreihenfolge zu vergleichen. Verwenden Sie dann die Funktion array_diff_uassoc , um $ arrray1 und $ array2 zu vergleichen und den Differenzteil auszugeben.
Angenommen, wir vergleichen die obigen JSON -Daten, es gibt einige identische Schlüsselnamen in $ array1 und $ array2 (wie "Alter" ), aber unterschiedliche Werte. Die Werte von "Name" und "Stadt" sind unterschiedlich.
Beim Ausführen des obigen Code wird Array_Diff_Uassoc das folgende Ergebnis zurückgeben (unter der Annahme, dass die Vergleichsfunktion in der Wörterbuchreihenfolge funktioniert):
Array
(
[name] => John
[city] => New York
)
Wie Sie sehen können, enthält das Ausgabeergebnis nur die verschiedenen Teile von $ array1 von $ array2 . Da wir eine Vergleichsfunktion angeben, wird die Differenz anhand der Vergleichsregeln der Schlüsselnamen ermittelt.
Manchmal müssen wir JSON -Daten oder Arrays mit URLs verarbeiten, und wir müssen möglicherweise den darin enthaltenen Domänennamen ersetzen. Um das Beispiel praktischer zu gestalten, können wir den Domänennamen in der URL durch M66.NET durch die Funktion str_replace ersetzen.
Angenommen, wir haben eine JSON -Daten, die die URL enthält. Der folgende Code zeigt, wie Sie Array_Map und Str_Replace verwenden, um Domain -Namen in der URL zu ersetzen.
$jsonData = '{"website": "http://www.example.com", "profile": "https://www.example.com/profile"}';
$array = json_decode($jsonData, true);
// ersetzen URL Domain -Name in
$array = array_map(function($value) {
return is_string($value) ? str_replace('www.example.com', 'm66.net', $value) : $value;
}, $array);
print_r($array);
In diesem Code ersetzen wir den Domänennamen www.example.com in der URL in den JSON -Daten durch M66.net , und das Ausgabeergebnis lautet wie folgt: