php 递归与迭代区别

<?php
//递归
$arr=array(
array('id'=>1,'name'=>'河南省','pid'=>0),
array('id'=>2,'name'=>'许昌','pid'=>1),
array('id'=>3,'name'=>'信阳','pid'=>1),
array('id'=>4,'name'=>'邯郸','pid'=>5),
array('id'=>5,'name'=>'河北省','pid'=>0),
array('id'=>6,'name'=>'石家庄','pid'=>5)
);
function getAll($arr,$id=0)
{
$sub=array();
foreach($arr as $k=>$v)
{
if($v['pid']==$id)
{
$sub[]=$v['name'];
$sub=array_merge($sub,getAll($arr,$v['id']));
}
}
return $sub;


}
//迭代
function iterator($arr,$pid=0)
{
$task=array($pid);
$tree=array();
while(!empty($task))
{
$flag=false;
foreach($arr as $k=>$v)
{
if($v['pid']==$pid)
{
$tree[]=$v;
array_push($task,$v['id']);
$pid=$v['id'];
unset($arr[$k]);
$flag=true;
}
}
if($flag==false)
{
array_pop($task);
$pid=end($task);
}
}
return $tree;
}
print_r(iterator($arr));
阅读更多
换一批

没有更多推荐了,返回首页