Maison > développement back-end > Problème PHP > Comment convertir un tableau multidimensionnel en tableau unidimensionnel en PHP

Comment convertir un tableau multidimensionnel en tableau unidimensionnel en PHP

PHPz
Libérer: 2023-04-19 11:23:57
original
871 Les gens l'ont consulté

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))
);
Copier après la connexion

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    |
Copier après la connexion

À 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;
}
Copier après la connexion

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);
Copier après la connexion

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
)
Copier après la connexion

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.

  1. Comment gérer les clés de tableau ?

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;
}
Copier après la connexion

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 .

  1. Comment gérer les tableaux associatifs multidimensionnels ?

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)
    )
);
Copier après la connexion

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;
}
Copier après la connexion

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é.

  1. Comment gérer les tableaux nuls et vides dans les tableaux ?

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;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal