Wie finde ich Zeilen, die in einem mehrdimensionalen Array vorhanden sind, in einem anderen jedoch nicht?

Susan Sarandon
Freigeben: 2024-11-09 09:39:02
Original
810 Leute haben es durchsucht

How to Find Rows Present in One Multidimensional Array but Not in Another?

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 dem Login kopieren

Nach der Konvertierung können wir array_diff() verwenden, um diese zu vergleichen -dimensionale Arrays und erhalten die Differenz.

$serializedDifference = array_diff($serializedPageids, $serializedParentpage);
Nach dem Login kopieren

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);
Nach dem Login kopieren

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',
  ),
)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage