为什么scandir()为目录返回false?

时间:2011-04-02 04:51:49

标签: php

我有一个名为client_images的目录,其dir_1dir_2dir_3作为子目录。当我运行以下内容时:

foreach(scandir("client_images") as $key => $value ){
    if(is_dir($value)){
        echo $value." is a dir.<br>";
    }
    else{
        echo $value." is not a dir.<br>";
    }
}

我得到:

. is a dir.
.. is a dir.
dir_1 is not a dir.
dir_2 is not a dir.
dir_3 is not a dir.

为什么php为目录返回false?

3 个答案:

答案 0 :(得分:2)

你在做scandir("client_images");结果是没有 client_images/路径的裸文件名,所以它在当前目录中查找它们。当然,.之间可能存在的唯一目录。 client_images/...,所有目录中都有条目。

答案 1 :(得分:0)

您可以使用DirectoryIterators扫描目录。使用以下代码检查文件是否是目录

$iterator = new DirectoryIterator('path');
foreach ($iterator as $fileinfo) {
    if ($fileinfo->isDir()) {
        echo $fileinfo->getFilename() . "\n";
    }
} 

答案 2 :(得分:0)

$mydir = "client_images/";

foreach(scandir($mydir) as $key => $value ){
  if(is_dir($mydir . $value)){
    echo $value." is a dir.<br>";
    }
  else{
    echo $value." is not a dir.<br>";
    }
  }