欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

一个遍历文件目录的function,有两个问题请指教?

程序员文章站 2022-06-13 23:07:58
...
问题一、static $file_list 的static是为递归叠加使用,如何避免外面两次以上调用,后边的结果里叠加前边调用的结果?
问题二、形参$ext_name是否分成两个参数($mode=true,$ext_name='')比较合理?
  1. //遍历文件(文件列表)
  2. static function scan($dir,$ext_name=true){
  3. $dir_tree=array();
  4. static $file_list=null;
  5. static $the_file_list=null;
  6. foreach (scandir($dir) as $file) {
  7. $file_location=trim($dir,'/').'/'.$file;
  8. if (is_dir($file_location) && $file!="." && $file!="..") {
  9. array_push($dir_tree,self::scan($file_location,$ext_name));
  10. } else {
  11. if (($file!='.' && $file!='..') || !is_dir($file)) {
  12. if ($ext_name===true) {
  13. $file_list[]=$file_location;
  14. }
  15. if ($ext_name && $ext_name==trim(strrchr($file,'.'))) {
  16. $the_file_list[]=$file_location;
  17. }
  18. $tmp=explode('/',$dir);
  19. array_push($dir_tree,''.end($tmp).' '.$file);
  20. }
  21. }
  22. }
  23. $result=($ext_name===true) ? $file_list : $the_file_list;
  24. return $ext_name ? $result : $dir_tree;
  25. }
复制代码

上一篇: 静态变量/方法问题

下一篇: epoll