function generateTree($items){
$tree = array();
foreach($items as $item){
if(isset($items[$item['pid']])){
$items[$item['pid']]['son'][] = &$items[$item['id']];
}else{
$tree[] = &$items[$item['id']];
}
}
return $tree;
}
$items = array(
1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),
2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),
3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),
4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),
5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),
);
print_r(generateTree($items));
无限级分类
$items[$item['pid']]['son'][] = &$items[$item['id']];
这句没看明白,我看引用的意思是,不同变量使用同样的值?
但是这句感觉想再追加数组一样?
不太明白。
$items[$item['pid']]['son'][] = &$items[$item['id']];
右边的值在后续循环中会追加子元素,使用引用可以保证左边的输出结果都是最新的