Heim >Backend-Entwicklung >PHP-Tutorial >Wie finde ich unterschiedliche verschachtelte Arrays in mehrdimensionalen Arrays?

Wie finde ich unterschiedliche verschachtelte Arrays in mehrdimensionalen Arrays?

Susan Sarandon
Susan SarandonOriginal
2024-11-16 14:19:03896Durchsuche

How to Find Dissimilar Nested Arrays within Multidimensional Arrays?

Unähnliche verschachtelte Arrays in mehrdimensionalen Arrays finden

Betrachten Sie die folgenden zwei Arrays, die assoziative Informationszeilen enthalten:

$pageids = [
    ['id' => 1, 'linklabel' => 'Home', 'url' => 'home'],
    ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'],
    ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'],
    ['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'],
    ['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'],
];

$parentpage = [
    ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'],
    ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'],
];

Unsere Aufgabe besteht darin, die assoziativen Zeilen zu identifizieren und zurückzugeben, die in $pageids vorhanden sind, aber in $parentpage fehlen. Die Verwendung von array_diff_assoc() auf der ersten Ebene dieser Arrays liefert jedoch nicht das gewünschte Ergebnis.

Um diese Herausforderung zu meistern, können wir eine Kombination aus den Funktionen array_map() und serialize() nutzen. Dieser Ansatz wandelt jedes Unterarray in eine String-Darstellung um, wodurch die mehrdimensionale Struktur effektiv abgeflacht wird.

$pageWithNoChildren = array_map('unserialize',
    array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
  1. array_map('serialize', $pageids): Konvertiert jedes Unterarray in $pageids in ein Zeichenfolge, die seine Struktur darstellt.
  2. array_map('serialize', $parentpage): Gleicher Prozess für $parentpage.
  3. array_diff(): Vergleicht die Zeichenfolgendarstellungen und gibt ein Array von Unterschieden zurück.
  4. array_map('unserialize', ...): Konvertiert die Zeichenfolgenunterschiede zurück in Unterarrays um die gewünschte Struktur wiederherzustellen.

Das resultierende $pageWithNoChildren-Array enthält die Unterarrays von $pageids, die vorhanden sind nicht vorhanden in $parentpage:

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 unterschiedliche verschachtelte Arrays in mehrdimensionalen Arrays?. 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