参考了某个哥们(不好意思,忘记叫什么了)的写法。稍微改了一下。不过思路都是一样的。
<?php
function makeTree($array)
{
$tree = array();//最后的树型结构
//开始循环判断,如果为顶级,则传址进入树形结构
//否则,则放入上一级结构内
foreach($array as $arr)
{
//var_dump($arr['pid']!=0);
if($arr['pid']!=0)
{
$array[$arr['pid']-1]['son'][] = &$array[$arr['id']-1];
}
else
{
$tree[] = &$array[$arr['id']-1];
}
}
return $tree;
}
$array = array(
array('id'=>1,'pid'=> 0,'name'=>'1J'),
array('id'=>2,'pid'=> 1,'name'=>'2J'),
array('id'=>3,'pid'=> 2,'name'=>'3J'),
array('id'=>4,'pid'=> 0,'name'=>'1J'),
array('id'=>5,'pid'=> 2,'name'=>'3J'),
array('id'=>6,'pid'=> 3,'name'=>'4J'),
);
echo '<pre>';
print_r(makeTree($array));
echo '</pre>';