Combiner des tableaux associatifs avec différents jeux de clés pour créer un tableau unifié peut être un défi. Cette question explore une méthode pour y parvenir, et le résultat souhaité est un tableau dans lequel les clés sont fusionnées et les colonnes manquantes sont remplies avec une valeur par défaut.
Pour ce faire, il a été suggéré d'utiliser la fonction array_merge conjointement avec un tableau de clés soigneusement conçu :
$keys = array(); foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($d)) as $key => $val) { $keys[$key] = ''; }
Cette boucle parcourt tous les éléments des tableaux d'entrée, extrayant les clés uniques et leur attribuant des valeurs vides. Le tableau $keys résultant contient toutes les clés possibles qui peuvent exister dans le tableau fusionné final.
Ensuite, chaque tableau d'entrée est fusionné avec le tableau $keys :
$data = array(); foreach($d as $values) { $data[] = array_merge($keys, $values); }
Cette étape garantit que chaque ligne du tableau final contient toutes les clés possibles, toutes les valeurs manquantes étant remplies par une chaîne vide. Le tableau $data résultant est le tableau fusionné et complété souhaité.
Alternativement, un tableau de paires de clés peut être créé et fusionné avec chaque tableau d'entrée :
$keys = array_keys(call_user_func_array('array_merge', $d)); $key_pair = array_combine($keys, array_fill(0, count($keys), null)); $values = array_map(function($e) use ($key_pair) { return array_merge($key_pair, $e); }, $d);
Cette méthode crée essentiellement un carte de toutes les clés possibles vers des valeurs nulles. Chaque tableau d'entrée est ensuite fusionné avec le tableau $key_pair, obtenant le même résultat que l'approche précédente.
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!