<?php header("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
結果: