首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 遞歸實現無限分類樹構建

     編輯:PHP 綜合知識

數據結構

$rows = [
    ['id'=>1, 'name'=>'dev', 'parentid'=>0],
    ['id'=>2, 'name'=>'php', 'parentid'=>1],
    ['id'=>3, 'name'=>'smarty', 'parentid'=>2],
    ['id'=>4, 'name'=>'life', 'parentid'=>0],
    ['id'=>5, 'name'=>'pdo', 'parentid'=>2],
    ['id'=>6, 'name'=>'pdo-mysql', 'parentid'=>5],
    ['id'=>7, 'name'=>'java', 'parentid'=>1],
];

遞歸構建函數

function findChild(&$arr, $id) {
    $childs = [];
    foreach ($arr as $k => $v) {
        if ($v['parentid'] == $id) $childs[] = $v;
    }
    return $childs;
}

function buildTree($root_id) {
    global $rows;
    $childs = findChild($rows, $root_id);
    if (empty($childs)) return null;
    foreach ($childs as $k => $v) {
        $res = buildTree($v['id']);
        if ($res !== null) $childs[$k]['childs'] = $res;
    }
    return $childs;
}

$tree = buildTree(0);
print_r($tree);

輸出結構

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => dev
            [parentid] => 0
            [childs] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => php
                            [parentid] => 1
                            [childs] => Array
                                (
                                    [0] => Array ( [id]=>3, [name]=>smarty, [parentid]=>2 )
                                    [1] => Array
                                        (
                                            [id] => 5
                                            [name] => pdo
                                            [parentid] => 2
                                            [childs] => Array ( [0] => Array ( [id]=>6, [name]=>pdo-mysql, [parentid]=>5 ) )
                                        )
                                )
                        )
                    [1] => Array ( [id]=>7, [name]=>java, [parentid]=>1 )
                )
        )
    [1] => Array ( [id]=>4, [name]=>life, [parentid]=>0 )
)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved