php 递归与迭代区别
来源:互联网 发布:淘宝猫粮店推荐 编辑:程序博客网 时间:2024/05/29 08:27
<?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));
//递归
$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));
0 0
- php 递归与迭代区别
- php递归和迭代的区别
- php递归和迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 递归与迭代的区别
- 递归与迭代的区别
- 迭代与递归的区别
- 迭代与递归的区别
- C语言经典算法15
- BOM编程-Document
- leetcode 439. Ternary Expression Parser
- 安卓最新版本及基础知识
- 最长公共子序列与编辑距离动态规划原理分析
- php 递归与迭代区别
- C语言经典算法16
- oracle sql语句解析过程
- Linux安装搜狗输入法
- BOM编程-ELEMENT
- JS学习(三)
- 【回归分析】[5]--多元线性回归对参数的F检验
- linux系统编程之信号(二):一些信号发送函数和不同精度的睡眠
- 围棋中的正方形