通过引用实现php无限极分类

/**
* 递归加引用实现无限极分类
* @param $items
* @return array
*/
public function getTree2($items)
{
   $array = [];
    foreach ($items as $item)
    {
     if(isset($items[$item['pid']]))//拿到pid
       {//放到里面
       $items[$item['pid']]['son'][] = &$items[$item['id']];
         }else {
       $array[] = &$items[$item['id']];
       }
   }
return $array;
}

$array = array(
array('id' => 1, 'pid' => 0, 'name' => '河北省'),
array('id' => 2, 'pid' => 0, 'name' => '北京市'),
array('id' => 3, 'pid' => 1, 'name' => '邯郸市'),
array('id' => 4, 'pid' => 2, 'name' => '朝阳区'),
array('id' => 5, 'pid' => 2, 'name' => '通州区'),
array('id' => 6, 'pid' => 4, 'name' => '望京'),
array('id' => 7, 'pid' => 4, 'name' => '酒仙桥'),
array('id' => 8, 'pid' => 3, 'name' => '永年区'),
array('id' => 9, 'pid' => 1, 'name' => '武安市'),
);

Array
(
[1] => Array
(
[id] => 1
[pid] => 0
[name] => 河北省
[children] => Array
(
[0] => Array
(
[id] => 3
[pid] => 1
[name] => 邯郸市
[children] => Array
(
[0] => Array
(
[id] => 8
[pid] => 3
[name] => 永年区
)

)

)

[1] => Array
(
[id] => 9
[pid] => 1
[name] => 武安市
)

)

)

[2] => Array
(
[id] => 2
[pid] => 0
[name] => 北京市
[children] => Array
(
[0] => Array
(
[id] => 4
[pid] => 2
[name] => 朝阳区
[children] => Array
(
[0] => Array
(
[id] => 6
[pid] => 4
[name] => 望京
)

[1] => Array
(
[id] => 7
[pid] => 4
[name] => 酒仙桥
)

)

)

[1] => Array
(
[id] => 5
[pid] => 2
[name] => 通州区
)

)

)

)

原文地址:https://www.cnblogs.com/zlf2000/p/12747336.html