地区递归算法

来源:互联网 发布:php转架构工程师 编辑:程序博客网 时间:2024/04/30 13:07

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


原创粉丝点击