一个用php写的例子。
调用方式:
$area = new Area();
$areaArray = $area->recursion($area->findByParent(0));
class Area {
protected $_areaArray = array();
public function __construct() {
$this->init();
}
public function init() {
$this->_areaArray[] = array('id' => 1, 'parent' => 0, 'title' => '福建');
$this->_areaArray[] = array('id' => 2, 'parent' => 1, 'title' => '厦门');
$this->_areaArray[] = array('id' => 3, 'parent' => 2, 'title' => '湖里');
$this->_areaArray[] = array('id' => 4, 'parent' => 1, 'title' => '龙岩');
$this->_areaArray[] = array('id' => 5, 'parent' => 0, 'title' => '广东');
$this->_areaArray[] = array('id' => 6, 'parent' => 5, 'title' => '梅州');
}
/**
* 根据parent查找数据
* @param int $parent
* @return array
*/
public function findByParent($parent) {
$array = array();
foreach ($this->_areaArray as $area) {
if ($area['parent'] == $parent) {
$array[] = $area;
}
}
return $array;
}
/**
* 递归地区数组
* @return type
*/
public function recursion($areaArray) {
foreach ($areaArray as $key => $area) {
$childAreaArray = $this->findByParent($area['id']);
if ($childAreaArray) {
$childAreaArray = $this->recursion($childAreaArray);
}
$areaArray[$key][] = $childAreaArray;
}
return $areaArray;
}
}