Vergleich assoziativer Zeilen mehrdimensionaler Arrays
Sie haben zwei mehrdimensionale Arrays, $pageids und $parentpage, wobei jede Zeile einen Datensatz mit Spalten darstellt „id“, „linklabel“ und „url“. Sie möchten die Zeilen finden, die in $pageids, aber nicht in $parentpage vorhanden sind, und so effektiv ein Array ($pageWithNoChildren) mit den fehlenden Zeilen erstellen.
Die direkte Verwendung von array_diff_assoc() für diese Arrays funktioniert jedoch nicht wie erwartet weil es die primären Array-Schlüssel vergleicht, nicht den Inhalt der verschachtelten Zeilen. Um die verschachtelten Zeilen zu vergleichen, können wir sie zunächst mit array_map() und der Funktion serialize() in eindimensionale Arrays konvertieren.
$serializedPageids = array_map('serialize', $pageids); $serializedParentpage = array_map('serialize', $parentpage);
Nach der Konvertierung können wir array_diff() verwenden, um diese zu vergleichen -dimensionale Arrays und erhalten die Differenz.
$serializedDifference = array_diff($serializedPageids, $serializedParentpage);
Schließlich können wir die serialisierte Differenz mithilfe von array_map() und der Funktion unserialize() wieder in mehrdimensionale Arrays umwandeln.
$pageWithNoChildren = array_map('unserialize', $serializedDifference);
Dies Der Prozess ermöglicht es uns, den Inhalt der verschachtelten Zeilen zu vergleichen und die Zeilen zu extrahieren, die in $pageids, aber nicht in $parentpage vorhanden sind, was zur erwarteten Ausgabe führt:
array ( 0 => array ( 'id' => 1, 'linklabel' => 'Home', 'url' => 'home', ), 3 => array ( 'id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign', ), 4 => array ( 'id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting', ), )
Das obige ist der detaillierte Inhalt vonWie finde ich Zeilen, die in einem mehrdimensionalen Array vorhanden sind, in einem anderen jedoch nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!