读取目标文件下所有目录以及文件,并以目录为下标

2018-07-06 01:29:35   php分享记录

 

  1. /**
  2. * 读取目标文件夹下所有文件,会按照目录层级结构组成数组
  3. * @param $dir
  4. * @param bool $is_deep 是否进行递归
  5. * @param bool $name_with_dir 命名是否增加目录名
  6. * @param array $father_dir
  7. * @return array|bool
  8. */
  9. public function read_all($dir,$is_deep = true,$name_with_dir = false, & $father_dir = array())
  10. {
  11. if (!is_dir($dir)) return false;
  12. $handle = opendir($dir);
  13. if ($handle) {
  14. while (($fl = readdir($handle)) !== false) {
  15. $temp = $dir . '/' . $fl;
  16. //如果不加 $fl!='.' && $fl != '..' 则会造成把$dir的父级目录也读取出来
  17. if (is_dir($temp) && $fl != '.' && $fl != '..' && $is_deep) {
  18. if (!isset($father_dir[$fl])) $father_dir[$fl] = array();
  19. $this->read_all($temp, true,false,$father_dir[$fl]);
  20. } else {
  21. // var_dump($father_dir);
  22. if ($fl != '.' && $fl != '..') {
  23. if($name_with_dir) {
  24. $father_dir[] = $temp;
  25. }else{
  26. $father_dir[] = $fl;
  27. }
  28. }
  29. }
  30. }
  31. }
  32. closedir($handle);
  33. return $father_dir;
  34. }