Astuce PHP : Convertir un tableau à deux dimensions en un tableau à 1 dimension
Voici une petite astuce bien pratique pour transformer un tableau à deux dimensions en un tableau à une seule dimension.
Par exemple, si je dispose d'un tableau tel que
$monTableau = array(
array(
'b1v1' => 'Mon Bloc 1, valeur 1',
'b1v2' => 'Mon Bloc 1, valeur 2',
),
array(
'b2v1' => 'Mon Bloc 2, valeur 1',
'b2v2' => 'Mon Bloc 2, valeur 2',
),
);
et mon but est d'obtenir
$monTableau2 = array(
'b1v1' => 'Mon Bloc 1, valeur 1',
'b1v2' => 'Mon Bloc 1, valeur 2',
'b2v1' => 'Mon Bloc 2, valeur 1',
'b2v2' => 'Mon Bloc 2, valeur 2',
);
tout simplement et, bien sûr, sans effort.
La solution la plus simple serait de parcourir tous les tableaux dans les tableaux pour écrire le tableau final. Mais cela peut paraître un peu fastidieux.
Voici donc une solution beaucoup plus simple
$monTableau = call_user_func_array('array_merge', $monTableau2);
Comme d'habitude, voici les explications qui vont avec.
La fonction array_merge permet de fusionner des tableaux. Pour cela, il est possible de lui passer autant de tableaux que l'on souhaite en paramètre. Mais il en faut au moins deux, impossible de lui passer notre tableau original, directement.
La fonction call_user_func_array permet d'appeller une fonction, dont on va lui passer les paramètres dans un seul tableau.
Cela tombe bien, puisque cela va nous permettre d'utiliser notre tableau original comme tableau de paramètres pour array_merge.