php数组生成树结构数据返回

现在有这样一个数组,要求按照树结构返回(当pid=0就表示其为菜单id,否则pid的值就是其属于某个菜单id下面):

$array = array(
1 => array ('id' => 1,'pid' => 0,'name' => 'a'),
2 => array ('id' => 2,'pid' => 0,'name' => 'b'),
3 => array ('id' => 3,'pid' => 1,'name' => 'c'),
4 => array ('id' => 4,'pid' => 3,'name' => 'a'),
5 => array ('id' => 5,'pid' => 4,'name' => 'e')
);

1.如果不使用&
foreach ($array as $item) {
$array[$item['pid']]['son'][$item['id']] = $array[$item['id']];
}

所返回的结果如下:

2.如果使用&

foreach ($array as $item) {
$array[$item['pid']]['son'][$item['id']] = &$array[$item['id']];
}
结果如图下所示:

 最后返回如下值即可:

  $array[0]['son']

 可以看出关键在这个&上,使用了&后,每次变化item的值,相应的母菜单下的该item值也会变化,这就是PHP的引用







原文地址:https://www.cnblogs.com/maoaji/p/8423510.html