php递归方法

Posted 开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php递归方法相关的知识,希望对你有一定的参考价值。

<?php
header("Content-type:text/html;charset=utf-8");
$city=array(
array(\'id\'=>1,\'name\'=>\'北京\',"pid"=>0),
array(\'id\'=>2,\'name\'=>\'广东\',"pid"=>0),
array(\'id\'=>3,\'name\'=>\'海淀区\',"pid"=>1),
array(\'id\'=>4,\'name\'=>\'昌平区\',"pid"=>1),
array(\'id\'=>5,\'name\'=>\'上地\',"pid"=>3),
array(\'id\'=>6,\'name\'=>\'西二旗\',"pid"=>3),
array(\'id\'=>7,\'name\'=>\'回龙观\',"pid"=>4),
array(\'id\'=>8,\'name\'=>\'霍营\',"pid"=>4),
array(\'id\'=>9,\'name\'=>\'深圳\',"pid"=>2),
array(\'id\'=>10,\'name\'=>\'广州\',"pid"=>2),
array(\'id\'=>11,\'name\'=>\'福田\',"pid"=>9),
array(\'id\'=>12,\'name\'=>\'南山\',"pid"=>9),
);
/*
$res=array(
array(\'id\'=1,\'name\'=>\'北京\',"pid"=>0),
array(\'id\'=3,\'name\'=>\'海淀区\',"pid"=>1),
array(\'id\'=5,\'name\'=>\'上地\',"pid"=>3),
array(\'id\'=6,\'name\'=>\'西二旗\',"pid"=>3),
array(\'id\'=4,\'name\'=>\'昌平区\',"pid"=>1),
array(\'id\'=7,\'name\'=>\'回龙观\',"pid"=>4),
array(\'id\'=8,\'name\'=>\'霍营\',"pid"=>4),
array(\'id\'=2,\'name\'=>\'广东\',"pid"=>0),
array(\'id\'=9,\'name\'=>\'深圳\',"pid"=>2),
array(\'id\'=11,\'name\'=>\'福田\',"pid"=>9),
array(\'id\'=12,\'name\'=>\'南山\',"pid"=>9),
array(\'id\'=10,\'name\'=>\'广州\',"pid"=>2),
);
*/
function tree($arr,$pid=0){
static $res=array();
foreach($arr as $v){
if($v[\'pid\']==$pid){
//说明找到,先保存,继续递归查找
$res[]=$v;
tree($arr,$v[\'id\']);
}
}
return $res;
}
echo "<pre>";
var_dump($city);
echo "<hr>";
$result=tree($city);
var_dump($result);

*********************************************************************************************************

在模型类中的使用情形:

/**
* @param array $arr [要排序的数组]
* @param integer $pid [父id]
* @return array [排序好的数组]
*/
public function tree($arr,$pid=0,$level=0){
       static $res=array();
       foreach($arr as $v){
       if($v[\'pid\']==$pid){
          //说明找到,先保存,然后在递归查找

       $v[\'level\']=$level;

         $res[]=$v;
         $this->tree($arr,$v[\'cat_id\'],$level+1);
      }
   }
  return $res;
}

 

以上是关于php递归方法的主要内容,如果未能解决你的问题,请参考以下文章

PHP实现递归的三种方法

php递归算法总结

php递归方法

PHP两种实现无级递归分类的方法

PHP中递归的实现(附例子)

PHP-递归算法