Comment convertir un tableau multidimensionnel en tableau unidimensionnel en PHP

PHPz
Libérer: 2023-04-27 14:35:18
original
832 Les gens l'ont consulté

La conversion de tableaux multidimensionnels et de tableaux unidimensionnels en PHP n'est pas une opération difficile. Cet objectif peut être facilement atteint en utilisant correctement certaines fonctions.

Que sont les tableaux multidimensionnels et les tableaux unidimensionnels

En PHP, les tableaux sont un type de données très utile et couramment utilisé, et sont souvent utilisés dans le développement réel. En plus de fournir des opérations régulières de stockage et d'accès aux éléments, les tableaux PHP permettent également l'utilisation de tableaux multidimensionnels et de tableaux unidimensionnels, qui sont utilisés respectivement pour stocker des données structurelles complexes et certaines données simples.

Un tableau multidimensionnel signifie que d'autres tableaux sont imbriqués à l'intérieur du tableau, c'est-à-dire que les éléments du tableau sont également un tableau. Ils peuvent avoir n'importe quelle dimension, mais chaque tableau doit avoir une clé logiquement unique. Par exemple, un tableau multidimensionnel utilisé pour stocker les notes de trois cours peut être représenté comme :

$score = array(
    "math" => array(
        "Tom" => 89,
        "Jerry" => 92,
        "John" => 76
    ),
    "english" => array(
        "Tom" => 78,
        "Jerry" => 85,
        "John" => 91
    ),
    "science" => array(
        "Tom" => 95,
        "Jerry" => 84,
        "John" => 88
    )
);
Copier après la connexion

tandis qu'un tableau unidimensionnel fait référence à un tableau dans lequel chaque élément ne contient qu'une seule valeur. la valeur peut être une chaîne, un nombre, un booléen, etc. Les clés d'un tableau unidimensionnel peuvent être des chaînes ou des nombres, mais les valeurs des clés numériques doivent être des nombres entiers ou des nombres à virgule flottante. Par exemple :

$fruit = array("apple", "orange", "banana", "pear");
Copier après la connexion

Tableau multidimensionnel vers tableau unidimensionnel

Tableau multidimensionnel vers tableau unidimensionnel est une opération très courante, pour certains éléments qui doivent être trié et comparé Pour des opérations telles que , recherche, etc., l'utilisation de tableaux unidimensionnels sera plus pratique. Ce qui suit présente deux méthodes de conversion de tableaux multidimensionnels en tableaux unidimensionnels.

Méthode 1 : Utiliser des fonctions récursives

La récursion est une méthode très puissante qui nous permet de gérer facilement de nombreuses tâches, notamment le traitement de tableaux multidimensionnels complexes. En utilisant une fonction récursive pour convertir un tableau multidimensionnel en un tableau unidimensionnel, vous pouvez progressivement réduire le nombre de niveaux du tableau et éventuellement déplacer tous les éléments dans un nouveau tableau unidimensionnel. L'implémentation spécifique est la suivante :

function multi_to_one($multi_arr)
{
    static $result_arr = array();
    foreach ($multi_arr as $key => $val) {
        if (is_array($val)) {
            multi_to_one($val);
        } else {
            $result_arr[$key] = $val;
        }
    }
    return $result_arr;
}
Copier après la connexion

Dans cette fonction, nous parcourons chaque élément si nous constatons que l'élément actuel est un tableau, alors nous effectuons une opération récursive dessus jusqu'à ce que l'élément ne soit pas. plus un tableau ; Sinon, nous ajoutons l'élément courant au tableau statique $result_arr défini dans la fonction. Enfin, nous renvoyons le tableau unidimensionnel traité. $result_arr 中。最后,我们返回这个处理好的一维数组。

使用这个函数可以将上文中的多维数组 $score 转换为一维数组:

$result = multi_to_one($score);
print_r($result);
Copier après la connexion

输出结果为:

Array
(
    [Tom] => 95
    [Jerry] => 84
    [John] => 88
)
Copier après la connexion
Copier après la connexion

方法二:使用 array_walk_recursive 函数

PHP 中有一个专门用于遍历数组的函数 array_walk_recursive,它可以遍历多维数组中的每一个元素。这个函数可以接受一个回调函数作为第二个参数,我们可以在这个回调函数中操作元素并将它添加到新的一维数组中。下面是具体实现:

function flatten_array($multi_arr)
{
    $result_arr = array();
    array_walk_recursive($multi_arr, function($val, $key) use (&$result_arr) { $result_arr[$key] = $val; });
    return $result_arr;
}
Copier après la connexion

与第一个方法相比,这个方法使用了一个匿名函数来完成回调操作,这个函数使用了 use 关键字将外部变量 $result_arr 引入,并将处理好的元素存储在这个数组中。最后返回生成的一维数组。

使用这个函数也可以将上文的多维数组 $score 转换为一维数组:

$result = flatten_array($score);
print_r($result);
Copier après la connexion

输出结果为:

Array
(
    [Tom] => 95
    [Jerry] => 84
    [John] => 88
)
Copier après la connexion
Copier après la connexion

一维数组转多维数组

将一维数组转换为多维数组也是一个非常常见的需求,在实际应用中经常遇到需要根据某些条件对一维数组进行分组的情况。以下介绍了一种将一维数组转为多维数组的方法。

方法:使用 array_reduce 函数

array_reduce 是 PHP 中的一个高阶函数,它可以像 array_walk_recursive 一样遍历数组,但是与 array_walk_recursive 不同的是, array_reduce 还可以接受一个参数作为函数的初始值,这个值会成为每个回调函数的初始值传递给它们。 array_reduce 可以被用于各种类型的计算和处理操作,我们可以通过它来将一维数组转换为多维数组。

下面是具体实现:

function group_array($data_arr, $group_key)
{
    $result_arr = array_reduce($data_arr, function(&$result, $item) use ($group_key) {
        $index = $item[$group_key];
        if (!isset($result[$index])) {
            $result[$index] = array();
        }
        $result[$index][] = $item;
        return $result;
    }, array());

    return $result_arr;
}
Copier après la connexion

在这个函数中,我们使用了匿名函数来执行回调函数,在遍历数组时,如果当前元素的 $group_key 值还没有被加入到新的多维数组中,我们就创建一个新的数组元素作为其键,然后将当前元素添加到这个新数组的值中。在整个过程中,回调函数的第一个参数 $result

Utilisez cette fonction pour convertir le tableau multidimensionnel $score ci-dessus en un tableau unidimensionnel :

$data = array(
    array("id" => 1, "name" => "Tom", "group" => "A"),
    array("id" => 2, "name" => "Jerry", "group" => "A"),
    array("id" => 3, "name" => "John", "group" => "B"),
    array("id" => 4, "name" => "Smith", "group" => "C"),
);
Copier après la connexion
Le résultat de sortie est : #🎜🎜 #
$result = group_array($data, "group");
print_r($result);
Copier après la connexion

Méthode 2 : Utiliser la fonction array_walk_recursive

Il existe une fonction array_walk_recursive spécifiquement utilisée pour parcourir des tableaux en PHP, qui peut parcourir chaque élément dans un environnement multidimensionnel tableau. Cette fonction peut accepter une fonction de rappel comme deuxième paramètre, dans laquelle nous pouvons manipuler l'élément et l'ajouter à un nouveau tableau unidimensionnel. Voici l'implémentation spécifique :

Array
(
    [A] => Array
        (
            [0] => Array
                (
                    [id] => 1
                    [name] => Tom
                    [group] => A
                )

            [1] => Array
                (
                    [id] => 2
                    [name] => Jerry
                    [group] => A
                )

        )

    [B] => Array
        (
            [0] => Array
                (
                    [id] => 3
                    [name] => John
                    [group] => B
                )

        )

    [C] => Array
        (
            [0] => Array
                (
                    [id] => 4
                    [name] => Smith
                    [group] => C
                )

        )

)
Copier après la connexion

Par rapport à la première méthode, cette méthode utilise une fonction anonyme pour terminer l'opération de rappel. Cette fonction utilise le mot-clé use pour ajouter un externe. La variable $result_arr est introduite et les éléments traités sont stockés dans ce tableau. Enfin, le tableau unidimensionnel généré est renvoyé.

En utilisant cette fonction, vous pouvez également convertir le tableau multidimensionnel ci-dessus $score en un tableau unidimensionnel :

rrreee#🎜🎜#Le résultat de sortie est : #🎜🎜 #rrreee#🎜🎜#Tableau unidimensionnel en tableau multidimensionnel#🎜🎜##🎜🎜#La conversion d'un tableau unidimensionnel en tableau multidimensionnel est également une exigence très courante dans les applications pratiques. On constate souvent qu'un tableau unidimensionnel doit être converti en fonction de certaines conditions de regroupement de tableaux. Ce qui suit décrit une méthode pour convertir un tableau unidimensionnel en un tableau multidimensionnel. #🎜🎜##🎜🎜#Méthode : Utiliser la fonction array_reduce #🎜🎜##🎜🎜#array_reduce est une fonction d'ordre supérieur en PHP, elle peut ressembler à array_walk_recursive Parcourez le tableau, mais contrairement à array_walk_recursive, array_reduce peut également accepter un paramètre comme valeur initiale de la fonction, et cette valeur deviendra la valeur initiale de chaque fonction de rappel passée à eux . array_reduce peut être utilisé pour différents types de calculs et d'opérations de traitement, et nous pouvons l'utiliser pour convertir des tableaux unidimensionnels en tableaux multidimensionnels. #🎜🎜##🎜🎜#Ce qui suit est l'implémentation spécifique : #🎜🎜#rrreee#🎜🎜#Dans cette fonction, nous utilisons une fonction anonyme pour exécuter la fonction de rappel lors de la traversée du tableau, si le $. de l'élément actuel La valeur group_key n'a pas encore été ajoutée au nouveau tableau multidimensionnel, nous créons un nouvel élément de tableau comme clé, puis ajoutons l'élément actuel à la valeur de ce nouveau tableau. Pendant tout le processus, le premier paramètre $result de la fonction de rappel sera continuellement modifié et transmis jusqu'à ce qu'un tableau de sélection multidimensionnel traité soit finalement renvoyé. #🎜🎜##🎜🎜#Utilisez cette fonction pour convertir un tableau unidimensionnel : #🎜🎜#rrreee#🎜🎜# selon la touche "groupe" en un tableau multidimensionnel : #🎜🎜#rrreee#🎜🎜 #Le résultat de sortie est : #🎜🎜#rrreee#🎜🎜#Conclusion#🎜🎜##🎜🎜#La conversion de tableaux multidimensionnels et de tableaux unidimensionnels en PHP est une exigence que nous rencontrons souvent dans le développement quotidien. Nous pouvons utiliser des fonctions récursives ou des fonctions d'ordre supérieur pour convertir des tableaux multidimensionnels en tableaux unidimensionnels ou convertir des tableaux unidimensionnels en tableaux multidimensionnels. Dans les applications pratiques, nous devons choisir différentes méthodes en fonction de différentes situations et utiliser les fonctions appropriées pour terminer la conversion. #🎜🎜#

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