Maison >développement back-end >tutoriel php >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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-09 09:39:02870parcourir

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 trouver 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 converties, nous pouvons utiliser array_diff() pour comparer celles-ci. -tableaux dimensionnels et obtenir la différence.

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

Enfin, nous pouvons reconvertir la différence sérialisée en tableaux multidimensionnels en utilisant array_map() et le 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',
  ),
)

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