Lut*_*hos 2 php arrays directory dir
当我迭代某个目录中的所有文件时,我在使用is_dir时遇到了问题.代码有点小,所以我想如果我发布它你会更好理解我的意思:
$files = array();
if ($dir = @opendir($folder)){
while($file = readdir($dir)){
if (is_dir($file)) $files[] = $file;
}
closedir($dir);
}
print_r($files)
Run Code Online (Sandbox Code Playgroud)
它转储:([0] =>.)
否则,如果我不使用此代码检查文件是否为dir:
$files = array();
if ($dir = @opendir($folder)){
while($file = readdir($dir)){
$files[] = $file;
}
closedir($dir);
}
print_r($files)
Run Code Online (Sandbox Code Playgroud)
它转储了预期:([0] => .. [1] => bla [2] => blablabla [3] => index.php [4] => styles.css [5] =>.)
我想这只是使用$ file var作为参数的一些noob问题,但不知道如何使其工作.
谢谢阅读!
正如Kolink在评论中所说,你可能会更好地走这glob条路,但如果你决定坚持使用opendir:
路径将是$ folder.'/'.$ file,而不仅仅是$ file.opendir()返回相对路径.所以is_dir在你的循环中返回false.
if ($dir = opendir($folder)){
while(false !== ($file = readdir($dir))) {
if ($file == '.' || $file == '..') {
continue;
} else if (is_dir($folder . '/' . $file)) {
$files[] = $file;
}
}
closedir($dir);
}
Run Code Online (Sandbox Code Playgroud)
另外,请注意false !==.这是必要的,因为名为"0"的文件夹将评估为false(或其他一些边缘情况).此外,你很少真正关心.和..,所以代码在那里过滤.和..出去.
| 归档时间: |
|
| 查看次数: |
14154 次 |
| 最近记录: |