gpt4 book ai didi

php - is_dir 没有按预期工作

转载 作者:行者123 更新时间:2023-12-04 13:46:25 25 4
gpt4 key购买 nike

我在迭代某个目录中的所有文件时使用 is_dir 时遇到问题。代码有点小,所以我想如果我发布它你会更好地理解我的意思:

 $files = array();

if ($dir = @opendir($folder)){

while($file = readdir($dir)){

if (is_dir($file)) $files[] = $file;
}
closedir($dir);
}
print_r($files)

它转储:( [0] => .)

否则,如果我不使用以下代码检查文件是否为目录:

 $files = array();

if ($dir = @opendir($folder)){

while($file = readdir($dir)){

$files[] = $file;
}
closedir($dir);
}
print_r($files)

它转储了预期的内容:( [0] => .. [1] => bla [2] => blablabla [3] =>index.php [4] => styles.css [5] => .)

我猜这只是使用 $file var 作为参数的一些菜鸟问题,但不知道如何使其工作。

感谢阅读!

最佳答案

正如 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);

}

另外,请注意 false !==。这是必要的,因为名为“0”的文件夹将评估为假(或其他一些边缘情况)。此外,您很少会真正关心 ...,因此代码在其中用于过滤 .。 .出来。

关于php - is_dir 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com