Maison >développement back-end >tutoriel php >Comment comparer des lignes associatives de tableaux bidimensionnels en PHP ?

Comment comparer des lignes associatives de tableaux bidimensionnels en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-09 13:54:02358parcourir

How to Compare Associative Rows of 2-Dimensional Arrays in PHP?

Comparer les lignes associatives de tableaux bidimensionnels : un guide complet

Les tableaux multidimensionnels sont un moyen puissant d'organiser les données en PHP, mais les comparer peut être un défi. Cette question explore comment comparer efficacement les lignes associatives de deux tableaux bidimensionnels à l'aide de la fonction array_diff_assoc().

Défi :

L'objectif est d'identifier et d'extraire le lignes de $pageids qui ne sont pas présentes dans $parentpage. La fonction array_diff_assoc() est conçue pour comparer des tableaux associatifs, mais elle opère au premier niveau des tableaux, ignorant les lignes imbriquées.

Le problème :

Le code fourni :

$pageWithNoChildren = array_diff_assoc($pageids,$parentpage);

renvoie des résultats incorrects car il ignore les lignes imbriquées et ne prend en compte que les clés du premier niveau.

Solution :

La solution proposée consiste à convertir chaque sous-tableau en une représentation sous forme de chaîne à l'aide de serialize(). Cela transforme les tableaux multidimensionnels en tableaux unidimensionnels :

$diff = array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage));

Par la suite, les différences sont reconverties en sous-tableaux à l'aide d'unserialize() :

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

Cette méthode est efficace compare le contenu des lignes imbriquées, ce qui donne le résultat attendu suivant :

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