首页 > 代码库 > 那个PHP中号称最难的‘递归函数’
那个PHP中号称最难的‘递归函数’
昨天处理了一些私事,所以耽搁了一天,好在递归函数比较难以理解,所以今天有幸听了一遍:这个基于回调函数而存在的函数,的确不太好理解,需要将逻辑上的想法完全梳理通才可以顺利书写,这还是在拥有公式的情况下。
在经理的带领下,我们做了一个用递归函数打开当前文件夹,并且读取文件夹内所有文件的一个函数,现将代码整理如下:
<?php //打开文件夹:opendir; // $a = opendir(‘.‘); // //读取内容:readdir(资源名); // $b = ‘‘; // while(($b = readdir($a)) !== false){ // echo $b."<br>"; // } // closedir($a); ?> <?php function digui($path,$n=0){ $a = opendir($path); //读取内容:readdir(资源名); $b = ‘‘; while(($b = readdir($a)) !== false){ if($b == ‘.‘ ||$b == ‘..‘){ continue; } echo str_repeat("--", $n); if(is_dir($path."/".$b)){ echo "文件夹".$b,"<br>"; //当需要一层层地打开所有文件夹之时,因为重复的就是此函数本身,所以使用递归。 digui($path."/".$b,$n+1); continue; } echo $b."<br>"; } closedir($a); } // $a = ‘.‘; digui("."); ?>
一眼看上去,代码本身不算难,但中间出了一个困扰许久的问题就是在使递归函数自身重复的时候,$n++和$n+1的问题,涉及到了它会怎样显示。
还有,continue和break在函数本身不涉及到循环时,是不可以使用的,否则会出现致命性错误,而die函数则可以在终止函数的同时,停止die命令之后所有的PHP,号称终极剧毒。
网上所说的“die”和“exit”一个终止代码且清理缓存,另一个只终止代码,纯属谣传,二者的源代码一模一样,只是个别名而已,特此标记出来。
以上。
晚安。
还有,希望经理明天身体恢复健康。
本文出自 “12244243” 博客,请务必保留此出处http://12254243.blog.51cto.com/12244243/1884884
那个PHP中号称最难的‘递归函数’
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。