Combiner des tableaux associatifs avec différents jeux de clés pour créer un tableau unifié peut s'avérer difficile. 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 possède toutes les clés possibles, toutes les valeurs manquantes étant remplies avec 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 une 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3