Heim >Backend-Entwicklung >PHP-Tutorial >Wie finde ich Zeilen, die in einem mehrdimensionalen Array vorhanden sind, in einem anderen jedoch nicht?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-09 09:39:02871Durchsuche

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 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!

Stellungnahme:
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