地区递归算法

一个用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;
    }

}


你可能感兴趣的:(算法,PHP,function,Class,recursion)