1. 云栖社区>
2. PHP教程>
3. 正文

# PHP迭代与递归实现无限级分类

## 1.循环迭代实现

` 1 \$arr = [ 2     1=>['id'=>1,'name'=>'父1','father'=>NULL], 3     2=>['id'=>2,'name'=>'父2','father'=>NULL], 4     3=>['id'=>3,'name'=>'父3','father'=>NULL], 5     4=>['id'=>4,'name'=>'儿1-1','father'=>1], 6     5=>['id'=>5,'name'=>'儿1-2','father'=>1], 7     6=>['id'=>6,'name'=>'儿1-3','father'=>1], 8     7=>['id'=>7,'name'=>'儿2-1','father'=>2], 9     8=>['id'=>8,'name'=>'儿2-1','father'=>2],10     9=>['id'=>9,'name'=>'儿3-1','father'=>3],11     10=>['id'=>10,'name'=>'儿3-1-1','father'=>9],12     11=>['id'=>11,'name'=>'儿1-1-1','father'=>4],13     12=>['id'=>12,'name'=>'儿2-1-1','father'=>7],14 ];15 function generateTree(\$items){16     \$tree = array();17     foreach(\$items as \$item){18         if(isset(\$items[\$item['father']])){19             \$items[\$item['father']]['son'][] = &\$items[\$item['id']]; 20         }else{21             \$tree[] = &\$items[\$item['id']];22         }23     }24     return \$tree;25 }26 \$tree = generateTree(\$arr);27 print_r(json_encode(\$tree));`

PHP迭代与递归实现无限级分类-">

## 2.递归实现

`\$arr = [    0=>['id'=>1,'name'=>'父1','father'=>0],    1=>['id'=>2,'name'=>'父2','father'=>0],    2=>['id'=>3,'name'=>'父3','father'=>0],    3=>['id'=>4,'name'=>'儿1-1','father'=>1],    4=>['id'=>5,'name'=>'儿1-2','father'=>1],    5=>['id'=>6,'name'=>'儿1-3','father'=>1],    6=>['id'=>7,'name'=>'儿2-1','father'=>2],    7=>['id'=>8,'name'=>'儿2-1','father'=>2],    8=>['id'=>9,'name'=>'儿3-1','father'=>3],    9=>['id'=>10,'name'=>'儿3-1-1','father'=>9],    10=>['id'=>11,'name'=>'儿1-1-1','father'=>4],    11=>['id'=>12,'name'=>'儿2-1-1','father'=>7],];function generateTree(\$arr,\$id,\$step){    static \$tree=[];    foreach(\$arr as \$key=>\$val) {        if(\$val['father'] == \$id) {            \$flg = str_repeat('└―',\$step);            \$val['name'] = \$flg.\$val['name'];            \$tree[] = \$val;            generateTree(\$arr , \$val['id'] ,\$step+1);        }    }    return \$tree;}\$tree = generateTree(\$arr,0,0);foreach (\$tree as \$val){    echo \$val['name'].'<br>';}`

输出:

40+云计算产品，6个月免费体验