打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
php递归和迭代的区别
  • <?php  
  • $arr=array(  
  • array('id'=>1,'name'=>'河南省','pid'=>0),  
  • array('id'=>2,'name'=>'信阳市','pid'=>1),  
  • array('id'=>3,'name'=>'开封市','pid'=>1),  
  • array('id'=>6,'name'=>'广州市','pid'=>4),  
  • array('id'=>4,'name'=>'广东省','pid'=>0),  
  • array('id'=>5,'name'=>'深圳市','pid'=>4),  
  • );  
  • function digui($data,$pid=0)  
  • {  
  •     $arr=array();  
  •     foreach($data as $v){  
  •         if($v['pid']==$pid){  
  •             $arr[]=$v;  
  •             $arr=array_merge($arr,digui($data,$v['id']));  
  •         }  
  •     }  
  •     return $arr;  
  • }  
  • function  diedai($data,$id=0)  
  • {  
  •      $task=array($id);//任务表此时放进的$id是为了找儿子,然后再儿子中找孙子,  
  •      $tree=array();//地区表  
  •     while(!empty($task))  
  •     {  
  •         $flag=false;  
  •         foreach($data as $k=>$v)  
  •         {  
  •             if($v['pid']==$id)  
  •             {  
  •                 $tree[]=$v;//把找到的项放进$tree数组  
  •                 array_push($task,$v['id']);//每次把找到的儿子的id加进来  
  •                 $id=$v['id'];//每次把$id设成刚加进来的一项的id  
  •                 unset($data[$k]);//把找到的项删除,此处类似排除法  
  •                 $flag=true;//执行这一步说明上面的$id找到儿子了,如果为false说明这一if语句根本没执行同时说明最后  
  •                 //的$id没儿子,然后执行下面的if语句,把$id设为倒数第二项  
  •             }  
  •         }  
  •         if($flag==false)  
  •         {//当执行这一步时 说明上一步的foreach没执行也就是说明$task最后一项没找到孩子  
  •             array_pop($task);//删除最后一项  
  •             $id=end($task);//把$id设为倒数第二项,放到上面的foreach里去执行,找倒数第二项的儿子  
  •         }  
  •   
  •     }  
  •     return $tree;  
  • }  
  • var_dump(diedai($arr));  
  • ?> 
  • 本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
    打开APP,阅读全文并永久保存 查看更多类似文章
    猜你喜欢
    类似文章
    【热】打开小程序,算一算2024你的财运
    分享一个牛逼的PHP无限极分类生成树方法,巧用引用
    PHP实现无限极分类的两种方式
    PHP 无限级分类
    PHP中foreach的用法
    PHP无限分类实例程序
    php无限极分类组装成分类树的巧妙代码
    更多类似文章 >>
    生活服务
    热点新闻
    分享 收藏 导长图 关注 下载文章
    绑定账号成功
    后续可登录账号畅享VIP特权!
    如果VIP功能使用有故障,
    可点击这里联系客服!

    联系客服