地区递归算法

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

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值