PHP 递推使用

public function geiada(){
      //先从数据库查询需要的数据
       $allData = M("region")->field('id, pid, name, level')->select();
       // 格式化
       $tree = [];
       foreach ($allData as $pKey => $province) {
           if ($province['level'] == 1) {    // 省份
               //$tree[$province['id']] = $province;
               unset($allData[$pKey]);
               foreach ($allData as $cKey => $city) {
                   if ($city['level'] == 2 && $city['pid'] == $province['id']) {    // 城市
                       /*$tree[$province['id']]['city'][$city['id']] = $city;
                       $tree[] = $city;*/
                       unset($allData[$cKey]);
                      foreach ($allData as $rKey => $region) {
                           if ($region['level'] == 3 && $region['pid'] == $city['id']) {    // 地区
                               $tree[$province['id']][] = $region;
                               unset($allData[$rKey]);
                           }
                       }
                   }
               }
           }
       }
       $result = array();
       foreach($tree as $k=>$data){
           $res=[];
           foreach ($data as $key=>$value){
               $res[$value['pid']][] = $value;
           }
           $result[] = array_values($res);
       }
       foreach($result as $k1=>$v1){
           foreach ($v1 as $v2=>$v3){
               foreach ($v3 as $key2 =>$v4){
                   $result[$k1][$v2][$key2]['label']= $v4['name'];
                   $result[$k1][$v2][$key2]['value'] = $v4['id'];
                   unset($result[$k1][$v2][$key2]['id']);
                   unset($result[$k1][$v2][$key2]['pid']);
                   unset($result[$k1][$v2][$key2]['name']);
                   unset($result[$k1][$v2][$key2]['level']);
               }
           }
       }
       $this->returnApiSuccess('', $result);
    echo '<pre>';
    print_r($result);
    die;
   }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值