Trouver des tableaux imbriqués différents dans des tableaux multidimensionnels
Considérez les deux tableaux suivants contenant des lignes d'informations associatives :
$pageids = [ ['id' => 1, 'linklabel' => 'Home', 'url' => 'home'], ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ['id' => 6, 'linklabel' => 'Logo Design', 'url' => 'logodesign'], ['id' => 15, 'linklabel' => 'Content Writing', 'url' => 'contentwriting'], ]; $parentpage = [ ['id' => 2, 'linklabel' => 'Graphic Design', 'url' => 'graphicdesign'], ['id' => 3, 'linklabel' => 'Other Design', 'url' => 'otherdesign'], ];
Notre tâche est d'identifier et de renvoyer les lignes associatives présentes dans $pageids mais absentes dans $parentpage. Cependant, utiliser array_diff_assoc() au premier niveau de ces tableaux ne fournit pas le résultat souhaité.
Pour surmonter ce défi, nous pouvons exploiter une combinaison de fonctions array_map() et serialize(). Cette approche convertit chaque sous-tableau en une représentation sous forme de chaîne, aplatissant ainsi efficacement la structure multidimensionnelle.
$pageWithNoChildren = array_map('unserialize', array_diff(array_map('serialize', $pageids), array_map('serialize', $parentpage)));
Le tableau $pageWithNoChildren résultant contient les sous-tableaux de $pageids qui ne sont pas présents dans $parentpage :
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!