生成树型结构(比如省市区)

时间:2022-02-21 22:09:27

<?phpheader("Content-type: text/html; charset=utf-8");

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;
}
//需要注意的一点,数组的key值必须与id值保持一致
$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' => '安庆市'),
);
echo "<pre>";
print_r(generateTree($items));

 

上面方法的优化:

生成树型结构(比如省市区)生成树型结构(比如省市区)
<?php
header("Content-type: text/html; charset=utf-8");

function generateTree($items)
{
foreach($items as $item)
$items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
return isset($items[0]['son']) ? $items[0]['son'] : array();
}

//需要注意的一点,数组的key值必须与id保持一致
$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' => '安庆市'),
);
echo "<pre>";
print_r(generateTree($items));
View Code

 

结果:

生成树型结构(比如省市区)