Transposition de tableaux multidimensionnels en PHP : retournement et généralisation
La transposition d'un tableau multidimensionnel est une opération qui inverse les lignes et les colonnes, faisant ainsi pivoter le tableau 90 degrés. Pour aborder cette tâche de programmation courante, explorons une fonction PHP qui accomplit cela pour les tableaux bidimensionnels et de dimension supérieure.
Transposition de tableaux bidimensionnels
Pour un tableau bidimensionnel, comme l'exemple fourni dans la question, sa transposition est un processus simple. La fonction suivante, nommée transpose, réalise cela :
function transpose($array) { array_unshift($array, null); return call_user_func_array('array_map', $array); }
Cette fonction fonctionne en ajoutant un élément nul comme premier index du tableau, puis en utilisant array_map pour parcourir chaque ligne et créer un nouveau tableau du colonnes respectives.
Par exemple, pour transposer le tableau $foo donné dans la question :
$bar = transpose($foo); var_dump($bar[2]);
Cela affichera le résultat souhaité résultat :
array(3) { ["a"]=> string(2) "a2" ["b"]=> string(2) "b2" ["c"]=> string(2) "c2" }
Généralisation à des tableaux de dimension supérieure
La fonction de transposition peut être généralisée pour gérer des tableaux de n'importe quelle dimension en utilisant la récursivité. Voici comment procéder :
function multi_transpose($array) { if (!is_array($array)) { return array($array); } $transposed = array(); foreach ($array as $key => $value) { $transposed[] = multi_transpose($value); } return call_user_func_array('array_map', $transposed); }
Cette fonction prend un tableau en entrée et s'appelle récursivement sur les valeurs du tableau. Le cas de base est celui où la valeur n'est plus un tableau, auquel cas elle renvoie un tableau à un élément contenant la valeur. Pour les tableaux, il transpose chaque valeur de manière récursive et utilise array_map pour les combiner dans le tableau transposé final.
L'utilisation de la fonction multi_transpose est similaire à la fonction de transposition bidimensionnelle :
$multi_dimensional_array = ...; $transposed = multi_transpose($multi_dimensional_array);
Ceci La fonction peut gérer des tableaux arbitrairement imbriqués et les transposera en inversant leurs dimensions de 90 degrés.
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!