網上有很多,這是我自己做測試用的
$arr = array(
array('id'=>1,'name'=>'電腦','pid'=>0),
array('id'=>2,'name'=>'手機','pid'=>0),
array('id'=>3,'name'=>'筆記本','pid'=>1),
array('id'=>4,'name'=>'台式機','pid'=>1),
array('id'=>5,'name'=>'智能機','pid'=>2),
array('id'=>6,'name'=>'功能機','pid'=>2),
array('id'=>7,'name'=>'超級本','pid'=>3),
array('id'=>8,'name'=>'游戲本','pid'=>3),
);
/**
* @param $arr 數組
* @param $id id
* @param $level 層級
* @return array
*/
function demo($arr,$id,$level)
{
$list =array();
foreach ($arr as $k=>$v){
if ($v['pid'] == $id){
$v['level']=$level;
$v['son'] = demo($arr,$v['id'],$level+1);
$list[] = $v;
}
}
return $list;
}
echo "<pre>";
print_r(demo($arr,0,0));
輸出結果:
Array
(
[0] => Array
(
[id] => 1
[name] => 電腦
[pid] => 0
[level] => 0
[son] => Array
(
[0] => Array
(
[id] => 3
[name] => 筆記本
[pid] => 1
[level] => 1
[son] => Array
(
[0] => Array
(
[id] => 7
[name] => 超級本
[pid] => 3
[level] => 2
[son] => Array
(
)
)
[1] => Array
(
[id] => 8
[name] => 游戲本
[pid] => 3
[level] => 2
[son] => Array
(
)
)
)
)
[1] => Array
(
[id] => 4
[name] => 台式機
[pid] => 1
[level] => 1
[son] => Array
(
)
)
)
)
[1] => Array
(
[id] => 2
[name] => 手機
[pid] => 0
[level] => 0
[son] => Array
(
[0] => Array
(
[id] => 5
[name] => 智能機
[pid] => 2
[level] => 1
[son] => Array
(
)
)
[1] => Array
(
[id] => 6
[name] => 功能機
[pid] => 2
[level] => 1
[son] => Array
(
)
)
)
)
)