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!