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
Libérer: 2024-11-16 14:19:03
original
906 Les gens l'ont consulté

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'],
];
Copier après la connexion

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)));
Copier après la connexion
  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',
  ),
)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal