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!