Maison >développement back-end >tutoriel php >Comment trouver des tableaux imbriqués différents dans des tableaux multidimensionnels ?

Comment trouver des tableaux imbriqués différents dans des tableaux multidimensionnels ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-16 14:19:03899parcourir

How to Find Dissimilar Nested Arrays within Multidimensional Arrays?

Trouver des tableaux imbriqués différents dans des tableaux multidimensionnels

Considérez les deux tableaux suivants contenant des lignes d'informations associatives :

$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'],
];

Notre tâche est d'identifier et de renvoyer les lignes associatives présentes dans $pageids mais absentes dans $parentpage. Cependant, utiliser array_diff_assoc() au premier niveau de ces tableaux ne fournit pas le résultat souhaité.

Pour surmonter ce défi, nous pouvons exploiter une combinaison de fonctions array_map() et serialize(). Cette approche convertit chaque sous-tableau en une représentation sous forme de chaîne, aplatissant ainsi efficacement la structure multidimensionnelle.

$pageWithNoChildren = array_map('unserialize',
    array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
  1. array_map('serialize', $pageids) : convertit chaque sous-tableau de $pageids en un chaîne représentant sa structure.
  2. array_map('serialize', $parentpage) : Même processus pour $parentpage.
  3. array_diff() : Compare les représentations de chaîne et renvoie un tableau de différences.
  4. array_map('unserialize', ...) : reconvertit les différences de chaînes en sous-tableaux pour restaurer la structure souhaitée.

Le tableau $pageWithNoChildren résultant contient les sous-tableaux de $pageids qui ne sont pas présents dans $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',
  ),
)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn