Maison  >  Article  >  développement back-end  >  Utilisation des fonctions de regroupement de tableaux PHP dans la création de structures hiérarchiques

Utilisation des fonctions de regroupement de tableaux PHP dans la création de structures hiérarchiques

WBOY
WBOYoriginal
2024-05-01 10:06:02633parcourir

Les fonctions de regroupement de tableaux PHP peuvent être utilisées pour créer des structures hiérarchiques en regroupant les éléments du tableau en fonction de clés spécifiées, générant ainsi des tableaux avec plusieurs niveaux d'imbrication. L'exemple de code utilise array_group_by() pour regrouper les données, puis les convertit en hiérarchie à l'aide de la fonction récursive createHierarchy(). Cette fonction parcourt les résultats regroupés, crée des sous-niveaux basés sur parent_id et renvoie finalement un tableau imbriqué avec une belle structure hiérarchique.

PHP 数组分组函数在创建层级结构中的使用

Application de la fonction de regroupement de tableaux PHP dans la création d'une structure hiérarchique

La fonction de regroupement de tableaux est très utile pour traiter des scénarios où la hiérarchie des données doit être maintenue. En PHP, la fonction array_group_by peut créer des tableaux imbriqués à plusieurs niveaux en regroupant les éléments dans un tableau en fonction d'une clé spécifiée. array_group_by 函数可以将数组中的元素根据指定键进行分组,从而创建具有多个级别的嵌套数组。

代码示例

<?php

// 有一个包含 id 和 parent_id 的表数据
$tableData = [
    ['id' => 1, 'parent_id' => null],
    ['id' => 2, 'parent_id' => 1],
    ['id' => 3, 'parent_id' => 2],
    ['id' => 4, 'parent_id' => 1],
    ['id' => 5, 'parent_id' => 4],
];

// 根据 parent_id 对表数据进行分组
$groupedData = array_group_by($tableData, 'parent_id');

// 递归函数用于将分组结果转换为层级结构
function createHierarchy($data, $parentId = null) {
    $result = [];
    foreach ($data as $id => $values) {
        if ($id == $parentId) {
            foreach ($values as $value) {
                $result[] = [
                    'id' => $value['id'],
                    'value' => $value['value'],
                    'children' => createHierarchy($data, $value['id']),
                ];
            }
            return $result;
        }
    }
}

// 将分组数据转换为层级结构
$hierarchy = createHierarchy($groupedData, null);

// 打印层级结构
print_r($hierarchy);

输出结果

Array
(
    [0] => Array
        (
            [id] => 1
            [value] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [value] => 2
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 3
                                            [value] => 3
                                            [children] => Array
                                                (
                                                )
                                        )
                                )
                        )
                    [1] => Array
                        (
                            [id] => 4
                            [value] => 4
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 5
                                            [value] => 5
                                            [children] => Array
                                                (
                                                )
                                        )
                                )
                        )
                )
        )
)

在这个示例中,createHierarchy

🎜Exemple de code🎜🎜rrreee🎜🎜Résultat de sortie🎜🎜rrreee🎜Dans cet exemple, la fonction createHierarchy utilise un algorithme récursif pour parcourir les données groupées et créer des hiérarchies enfants basées sur parent_id. En fin de compte, il renvoie un tableau PHP imbriqué avec une belle structure hiérarchique. 🎜

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!

Déclaration:
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