在我寻求一些基本的 php 知识的过程中,我尝试做一个简单的函数来读取不使用递归迭代器的文件和目录。(更多的练习,但实际上需要任何 php<5.3 服务器)
该功能效果很好 - 但是当我尝试添加switch
($output) - 它不再列出所有文件(例如,在添加开关之前,它可以在 4 个文件夹(3+root)中看到 61 个文件,但添加了switch
它只能看到 47(仅根)。我在这里做错了吗?为什么该switch
语句会破坏虚假的“递归嵌套”?
function o99_list_my_files_scandir($dir,$output)
{
$result = $result2 = array();
$root = scandir($dir);
foreach($root as $value)
{
if($value === '.' || $value === '..' || $value == 'Thumb.db' || $value == 'Thumbs.db' || $value == '') { continue;}
if(is_file("$dir/$value")) {$result[]="$dir/$value"; continue;} // array files
if(is_dir("$dir/$value")) {$result2[]="$dir/$value"; continue;} // array dirs
foreach(o99_list_my_files_scandir("$dir/$value") as $value)
{
$result[] = $value;
}
}
// this is the troublemaker ...
switch ($output) {
case 'dirs' :
return array_filter($result2); // clean empty results of dirs
break;
case 'files' :
return array_filter($result); // Clean empty array of files
break;
}
}
有没有其他简单的方法可以让函数返回单独的目录和文件列表而不是统一数组?