Comment comparer des lignes associatives de tableaux bidimensionnels en PHP ?

Barbara Streisand
Libérer: 2024-11-09 13:54:02
original
310 Les gens l'ont consulté

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

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

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

$pageWithNoChildren = array_map('unserialize', $diff);
Copier après la connexion

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',
  ),
)
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