/** * 读取目标文件夹下所有文件,会按照目录层级结构组成数组 * @param $dir * @param bool $is_deep 是否进行递归 * @param bool $name_with_dir 命名是否增加目录名 * @param array $father_dir * @return array|bool */ public function read_all($dir,$is_deep = true,$name_with_dir = false, & $father_dir = array()) { if (!is_dir($dir)) return false; $handle = opendir($dir); if ($handle) { while (($fl = readdir($handle)) !== false) { $temp = $dir . '/' . $fl; //如果不加 $fl!='.' && $fl != '..' 则会造成把$dir的父级目录也读取出来 if (is_dir($temp) && $fl != '.' && $fl != '..' && $is_deep) { if (!isset($father_dir[$fl])) $father_dir[$fl] = array(); $this->read_all($temp, true,false,$father_dir[$fl]); } else {// var_dump($father_dir); if ($fl != '.' && $fl != '..') { if($name_with_dir) { $father_dir[] = $temp; }else{ $father_dir[] = $fl; } } } } } closedir($handle); return $father_dir; }