php实现的无限分类(递归版本)的例子

发布时间:2020-03-24编辑:脚本学堂
php实现的无限分类(递归版本)的例子,有需要的朋友可以看看。

php实现的无限分类(递归版本)的例子,有需要的朋友可以看看。
 

复制代码 代码如下:

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
        )
)

看有没有更简单的实现方法
 

复制代码 代码如下:

<?php
$rows = array(
    array(
        'id' => 1,
        'name' => 'dev',
        'parentid' => 0
    ),
    array(
        'id' => 2,
        'name' => 'php',
        'parentid' => 1
    ),
    array(
        'id' => 3,
        'name' => 'smarty',
        'parentid' => 2
    ),
    array(
        'id' => 4,
        'name' => 'life',
        'parentid' => 0
    ),
    array(
        'id' => 5,
        'name' => 'pdo',
        'parentid' => 2
    ),
    array(
        'id' => 6,
        'name' => 'pdo-mysql',
        'parentid' => 5
    ),
    array(
        'id' => 7,
        'name' => 'java',
        'parentid' => 1
    )
);

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

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

$tree=build_tree(0);
echo memory_get_usage();
print_r($tree);
?>

您可能感兴趣的文章:
php无限分类的例子(仿淘宝商品分类)
php实现的无限分类(递归版本)的例子
使用php数组实现的无限分类(不使用数据库与用递归)
php写的一个递归实现无限分类生成下拉列表的函数