标签:一个 scanf array add str handle dir while param
/** * 递归遍历文件夹 * @param string $dir * @return array * 返回一个数组 结构为: * array{ * ‘dirs‘=>[], 指定目录下的文件夹列表 * ‘files‘=>[],指定目录下的文件列表 * } */ function scanfDir1($dir = ‘‘, &$ret = array()) { if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $cur_path = $dir . DIRECTORY_SEPARATOR . $file; if (is_dir($cur_path)) { $ret[‘dirs‘][] = $cur_path; scanfDir1($cur_path, $ret); } else { $ret [‘files‘] [] = $cur_path; } } } closedir($handle); } return $ret; }
/** * 递归遍历文件夹:与上述方式一样,只不过是用内置函数scandir()代替opendir()和readdir()的过程 * @param string $dir * @return array * 返回一个数组 结构为: * array{ * ‘dirs‘=>[], 指定目录下的文件夹列表 * ‘files‘=>[],指定目录下的文件列表 * } */ function scanfDir2($dir = ‘‘, &$ret = array()) { if (!is_dir($dir)) { return array(); } $list = scandir($dir); foreach ($list as $key => $value) { if ($value == "." || $value == "..") { continue; } $cur_path = $dir . DIRECTORY_SEPARATOR . $value; if (is_dir($cur_path)) { $ret[‘dirs‘][] = $cur_path; scanfDir2($cur_path, $ret); } else { $ret [‘files‘] [] = $cur_path; } } return $ret; }
标签:一个 scanf array add str handle dir while param
原文地址:https://www.cnblogs.com/jxl1996/p/10234669.html