"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment trouver des lignes présentes dans un tableau multidimensionnel mais pas dans un autre ?

Comment trouver des lignes présentes dans un tableau multidimensionnel mais pas dans un autre ?

Publié le 2024-11-17
Parcourir:572

How to Find Rows Present in One Multidimensional Array but Not in Another?

Comparaison de lignes associatives de tableaux multidimensionnels

Vous disposez de deux tableaux multidimensionnels, $pageids et $parentpage, où chaque ligne représente un enregistrement avec des colonnes 'id', 'linklabel' et 'url'. Vous souhaitez rechercher les lignes présentes dans $pageids mais pas dans $parentpage, créant ainsi un tableau ($pageWithNoChildren) avec les lignes manquantes.

Cependant, utiliser array_diff_assoc() directement sur ces tableaux ne fonctionnera pas comme prévu car il compare les clés primaires du tableau, pas le contenu des lignes imbriquées. Pour comparer les lignes imbriquées, nous pouvons d'abord les convertir en tableaux unidimensionnels à l'aide de array_map() et de la fonction serialize().

$serializedPageids = array_map('serialize', $pageids);
$serializedParentpage = array_map('serialize', $parentpage);

Après les avoir convertis, nous pouvons utiliser array_diff() pour comparer ces tableaux unidimensionnels et obtenir la différence.

$serializedDifference = array_diff($serializedPageids, $serializedParentpage);

Enfin, nous pouvons reconvertir la différence sérialisée en tableaux multidimensionnels à l'aide de array_map() et de la fonction unserialize().

$pageWithNoChildren = array_map('unserialize', $serializedDifference);

Ce processus nous permet de comparer le contenu des lignes imbriquées et d'extraire les lignes qui sont présentes dans $pageids mais pas dans $parentpage, ce qui donne le résultat attendu :

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',
  ),
)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3