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
Freigeben: 2024-11-16 14:19:03
Original
894 Leute haben es durchsucht

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

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

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!

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