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 eindimensionalen Arrays zu vergleichen und den Unterschied zu ermitteln.
$serializedDifference = array_diff($serializedPageids, $serializedParentpage);
Endlich haben wir kann die serialisierte Differenz mithilfe von array_map() und der Funktion unserialize() zurück in mehrdimensionale Arrays konvertieren.
$pageWithNoChildren = array_map('unserialize', $serializedDifference);
Dieser Prozess ermöglicht es uns Vergleichen Sie den Inhalt der verschachtelten Zeilen und extrahieren Sie die Zeilen, die in $pageids, aber nicht in $parentpage vorhanden sind, was zum erwarteten Ergebnis führt Ausgabe:
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', ), )
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3