php无限分类递归及其排序详解
浏览量:297
what:
要满足下面的条件
1、记录条件值,记录的条件值必须保证不会再下一次调用时丢失。函数中static修饰的变量仅仅在第一次初始化,并保留变量值。
2、条件检查。限制了函数对自身的调用次数,可以防止无限调用导致程序奔溃。
why:
函数a内部调用另外的函数b,如果b函数没有完成,那么a函数就会一直等待下去,直到b函数完成,才会回到a函数继续执行。递归的过程中利用了这个特性,正是这个能帮助我们对无限分类进行排序
how:
function recursion($result,$parentid=0,$format="--"){ static $list=array(); foreach ($result as $k => $v){ if($v[parentid]==$parentid){ if($parentid!=0){ $v[title]=$format.$v[title]; } $list[]=$v; recursion($result,$v[id]," ".$format); } } return $list; } $list=recursion($result,0);