本篇文章为大家展示了PHP中怎么实现递归,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一:使用 参数引用 完成递归函数。操作的是同一块内存地址。
<?php
$i=1;
function test(&$i)
{
echo $i;
$i++;
if ($i < 10)
{
test($i);
}
}
test($i);// 输出123456789
test ( $i );// 输出10
?>
二:使用 全局变量 完成递归函数。
在函数域内部用 global 语句导入的一个真正的全局变量实际上是建立了一个到全局变量的引用。例子中,test()函数内部的 $i 实际上只是程序第一行中($i = 1;)的变量 $i 的一个应用;
<?php
$i = 1 ;
function test ()
{
global $i ;
echo $i ;
$i++;
if ($i <10 )
{
test();
}
}
test();// 输出123456789
test ();// 输出10
?>
三:使用 静态变量 完成递归函数。
static的作用:仅在第一次调用函数的时候对变量进行初始化,并且保留变量值。
<?php
function test ()
{
static $i = 1 ;
echo $i ;
$i ++;
if ( $i < 10 ) {
test ();
}
$i --;// 在每一层递归结束时自减,这一句可以帮助理解递归函数的执行过程
}
test();// 输出123456789
test();// 输出123456789
?>
例1. 使用全局变量的情况 递归遍历文件夹下的所有文件
function getFiles($dir)
{
global $arr;
if(is_dir($dir)){
$hadle = @opendir($dir);
while($file=readdir($hadle) )
{
if(!in_array($file,array('.', '..')) )
{
$dirr = $dir.'/'.$file;
if(is_dir($dirr))
{
getFiles($dirr);
}else{
array_push($arr, $dirr);
}
}
}
}
}
$arr = array();
getFiles('E:/logs');
print_r($arr);
例2:使用静态变量的情况递归遍历文件夹下的所有文件
function getFiles ($dir)
{
static $arr = array();
if(is_dir($dir)){
$hadle = opendir($dir);
while($file=readdir($hadle))
{
if(!in_array($file,array('.','..')) )
{
$dirr = $dir."/".$file;
if(is_dir($dirr))
{
getFiles ($dirr);
}else{
array_push($arr,$dirr);
}
}
}
}
return $arr;
}
$rows= array();
$rows = getFiles ('E:/logs');
print_r($rows);
上述内容就是PHP中怎么实现递归,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。