首页 > 解决方案 > readdir while循环未执行

问题描述

我目前有一个 while 循环,它应该读取给定的目录,然后用这些文件填充一个选择元素。目前,选择元素仍然为空,但如果我删除 while 循环,它将显示第一个选项。此代码在我的本地计算机上运行良好,并且此错误仅在远程服务器上产生。其他人可以看看是否有我可能遗漏的东西吗?

编码:

$path="files/Sales 101/module 1/";
$current_dir = $path;
$dir = opendir($current_dir);
while($file=readdir($dir)){
    $filepath = $current_dir.$file;    
    if($file == "." or $file == "..")
    {
        echo " ";
    }
    else
    {    
        echo "<option value='$filepath'>$file</option>";
    }             
}

标签: php

解决方案


根据php手册(http://php.net/manual/en/function.readdir.php)你应该使用

while(false !== $dir && ($file=readdir($dir))){...

因为如果它实际上 opendir 返回 false 你会有一个无限循环。最终检查 $dir 的类型可能会证实这一点。


推荐阅读