Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penggunaan fungsi pengelompokan tatasusunan PHP dalam mencipta struktur hierarki

Penggunaan fungsi pengelompokan tatasusunan PHP dalam mencipta struktur hierarki

WBOY
WBOYasal
2024-05-01 10:06:02633semak imbas

Fungsi pengelompokan tatasusunan PHP boleh digunakan untuk mencipta struktur hierarki dengan mengumpulkan elemen tatasusunan mengikut kekunci yang ditentukan, menjana tatasusunan dengan berbilang peringkat bersarang. Contoh kod menggunakan array_group_by() untuk mengumpulkan data dan kemudian menukarnya menjadi hierarki menggunakan fungsi rekursif createHierarchy(). Fungsi ini berulang melalui hasil terkumpul, mencipta sub-peringkat berdasarkan parent_id, dan akhirnya mengembalikan tatasusunan bersarang dengan struktur hierarki yang bagus.

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

Aplikasi fungsi pengelompokan tatasusunan PHP dalam mewujudkan struktur hierarki

Fungsi kumpulan tatasusunan amat berguna dalam menangani senario di mana hierarki data perlu dikekalkan. Dalam PHP, fungsi array_group_by boleh mencipta tatasusunan bersarang dengan berbilang peringkat dengan mengumpulkan elemen dalam tatasusunan berdasarkan kunci yang ditentukan. Contoh Kod Akhirnya, ia mengembalikan tatasusunan PHP bersarang dengan struktur hierarki yang bagus. 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

Atas ialah kandungan terperinci Penggunaan fungsi pengelompokan tatasusunan PHP dalam mencipta struktur hierarki. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn