Dans la programmation PHP, nous utilisons souvent des tableaux, et les tableaux multidimensionnels sont également un type de données très courant. En particulier lorsqu'il s'agit de données complexes et structurées, l'utilisation de tableaux multidimensionnels peut organiser les données plus clairement. Cependant, dans certains cas, nous devons convertir un tableau multidimensionnel en un tableau unidimensionnel, ce qui est très pratique. Cet article explique comment convertir un tableau multidimensionnel en un tableau unidimensionnel en PHP.
1. Qu'est-ce qu'un tableau multidimensionnel ?
En PHP, les tableaux peuvent avoir plusieurs dimensions. Un tableau unidimensionnel équivaut à une liste dans laquelle chaque élément a un indice et la valeur correspondante peut être obtenue via l'indice. Les tableaux multidimensionnels utilisent un tableau pour exprimer une structure similaire à un tableau ou une matrice, dans laquelle chaque élément peut être un tableau ou un autre tableau multidimensionnel.
Par exemple, le tableau bidimensionnel suivant représente un tableau d'informations sur un élève :
$students = array( array("name" => "张三", "age" => 18, "score" => array(90, 85, 94)), array("name" => "李四", "age" => 22, "score" => array(80, 88, 90)), array("name" => "王五", "age" => 20, "score" => array(92, 95, 90)) );
Il y a trois éléments dans ce tableau, chaque élément est un tableau unidimensionnel contenant trois paires clé-valeur, où les clés sont "nom" ", "âge" et "score". La valeur correspondant au « score » est un tableau unidimensionnel contenant trois éléments, représentant les scores des trois examens.
2. Pourquoi devons-nous convertir des tableaux multidimensionnels en tableaux unidimensionnels ?
Bien que les tableaux multidimensionnels soient pratiques pour exprimer des données complexes, dans certains cas, ils doivent être convertis en tableaux unidimensionnels afin que les données puissent être manipulées et traitées plus facilement.
Par exemple, si vous devez générer le tableau d'informations sur l'élève ci-dessus dans un tableau simple, vous devez alors développer les informations de chaque élève sur une seule ligne :
| 姓名 | 年龄 | 成绩1 | 成绩2 | 成绩3 | | 张三 | 18 | 90 | 85 | 94 | | 李四 | 22 | 80 | 88 | 90 | | 王五 | 20 | 92 | 95 | 90 |
À ce stade, vous devez étendre le tableau multidimensionnel en un tableau unidimensionnel, chaque ligne correspond à un tableau unidimensionnel.
3. Comment convertir un tableau multidimensionnel en un tableau unidimensionnel ?
En PHP, il n'est pas difficile de convertir un tableau multidimensionnel en un tableau d'un bit. Cela peut être réalisé grâce à des fonctions récursives.
Voici un exemple de code qui aplatit un tableau de dimensions arbitraires en un tableau unidimensionnel :
function flatten($arr){ $result = array(); foreach($arr as $value){ if(is_array($value)){ $result = array_merge($result, flatten($value)); }else{ $result[] = $value; } } return $result; }
Ce que fait cette fonction est simple : si l'élément est un tableau, il s'appelle de manière récursive, sinon il ajoute l'élément au milieu du tableau résultant. Vous pouvez convertir un tableau multidimensionnel en un tableau unidimensionnel en appelant cette fonction, par exemple :
$students = array( array("name" => "张三", "age" => 18, "score" => array(90, 85, 94)), array("name" => "李四", "age" => 22, "score" => array(80, 88, 90)), array("name" => "王五", "age" => 20, "score" => array(92, 95, 90)) ); $result = flatten($students); print_r($result);
Le résultat de sortie est :
Array ( [0] => 张三 [1] => 18 [2] => 90 [3] => 85 [4] => 94 [5] => 李四 [6] => 22 [7] => 80 [8] => 88 [9] => 90 [10] => 王五 [11] => 20 [12] => 92 [13] => 95 [14] => 90 )
Comme vous pouvez le voir, le tableau bidimensionnel d'origine a été aplati en un seul. -tableau dimensionnel contenant 15 éléments.
4. Problèmes rencontrés et solutions
Lors de la conversion de tableaux multidimensionnels, vous pouvez rencontrer des problèmes. Vous trouverez ci-dessous quelques problèmes possibles et les solutions correspondantes.
Dans l'exemple précédent, nous avons simplement développé les valeurs du tableau en un tableau unidimensionnel, en ignorant les clés du tableau. Si vous devez conserver les clés, vous pouvez utiliser le code suivant :
function flatten2($arr){ $result = array(); foreach($arr as $key => $value){ if(is_array($value)){ $result = array_merge($result, flatten2($value)); }else{ $result[$key] = $value; } } return $result; }
La seule différence entre cette fonction et la fonction précédente est que lorsque l'élément n'est pas un tableau, la valeur et la clé sont ajoutées au tableau résultant .
Lorsque chaque élément d'un tableau multidimensionnel est un tableau associatif, il peut être étendu en un tableau unidimensionnel, où chaque élément est un tableau associatif. Par exemple, pour étendre ce tableau :
$students = array( array( "name" => "张三", "age" => 18, "score" => array("语文" => 90, "数学" => 85, "英语" => 94) ), array( "name" => "李四", "age" => 22, "score" => array("语文" => 80, "数学" => 88, "英语" => 90) ), array( "name" => "王五", "age" => 20, "score" => array("语文" => 92, "数学" => 95, "英语" => 90) ) );
en un tableau unidimensionnel contenant 15 éléments, vous pouvez utiliser le code suivant :
function flatten3($arr){ $result = array(); foreach($arr as $key => $value){ if(is_array($value)){ if(!empty($value)){ foreach($value as $sub_key => $sub_value){ $result[$key . "_" . $sub_key] = $sub_value; } }else{ $result[$key] = ""; } }else{ $result[$key] = $value; } } return $result; }
La logique de cette fonction est similaire à la fonction précédente. La seule différence est que lorsque le. L'élément est un tableau associatif. La clé et la valeur sont concaténées et stockées dans le tableau de résultats en tant que nouvelle clé.
Dans l'exemple ci-dessus, si le tableau d'origine contient un tableau nul ou vide, ils seront ignorés après l'aplatissement car ce ne sont pas des éléments du tableau qui doivent être traités. Si vous souhaitez conserver ces éléments, vous pouvez directement ajouter un jugement à l'instruction if :
function flatten4($arr){ $result = array(); foreach($arr as $key => $value){ if(is_array($value)){ if(!empty($value)){ foreach($value as $sub_key => $sub_value){ $result[$key . "_" . $sub_key] = $sub_value; } }else{ $result[$key] = array(); } }else{ $result[$key] = $value; if(is_null($value)){ $result[$key] = null; } } } return $result; }
La seule différence entre cette fonction et la fonction précédente est que lorsque l'élément est nul ou un tableau vide, la valeur clé correspondante est directement ajouté au milieu du tableau de résultats.
5. Résumé
La conversion de tableaux multidimensionnels en tableaux unidimensionnels est très courante dans la programmation PHP. Elle nous permet de traiter et d'exploiter les données plus facilement. Avec les fonctions récursives, nous pouvons facilement aplatir un tableau de dimensions arbitraires en un tableau unidimensionnel. En pratique, en raison des différentes structures des tableaux multidimensionnels, certains cas extrêmes peuvent survenir et nécessitent un traitement spécial. Mais en général, ce processus n'est pas difficile, il suffit de se familiariser avec l'utilisation des fonctions récursives.
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!