is_dir无法识别文件夹

Rak*_*oon 4 php directory

我正在尝试创建一个扫描文件夹以查找子文件夹的函数,然后返回一个包含这些文件夹名称的数字数组.

这是我用于测试的代码.一旦我得到它打印出文件夹名称而不仅仅是"." 对于当前和以上文件夹的".."都会很好,我可以完成这个功能.

<?php
function super_l_getthemes($dir="themes")
{

if ($handle = opendir($dir)) {
    echo "Handle: {$handle}\n";
    echo "Files:\n";


    while (false !== ($file = readdir($handle))) {
       echo "{$file}<br>";
    }

    closedir($handle);
}
?>
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,并打印出文件夹的所有内容:文件,子文件夹和"." 和"......"

但如果我更换:

  while (false !== ($file = readdir($handle))) {
       echo "{$file}<br>";
    }
Run Code Online (Sandbox Code Playgroud)

有:

while (false !== ($file = readdir($handle))) {
        if(file_exists($file) && is_dir($file)){echo "{$file}";}
    }
Run Code Online (Sandbox Code Playgroud)

该功能仅打印"." 和"..",而不是我想要打印的两个文件夹名称.

任何帮助表示赞赏.

nuq*_*qsa 6

您必须提供绝对路径file_exists,否则它将在当前执行路径中查找它.

while (false !== ($file = readdir($handle))) {
    $file_path = $dir . DIRECTORY_SEPARATOR . $file;
    if (file_exists($file_path) && is_dir($file_path)) {
        echo "{$file}";
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 那里不需要报价.`echo $ file`工作得很好.此外,无论如何,变量插值对双引号都有效,因此您也不需要括号. (2认同)