首页 >后端开发 >php教程 >为什么在使用 readdir() 时我的 PHP 代码返回'1”而不是文件名?

为什么在使用 readdir() 时我的 PHP 代码返回'1”而不是文件名?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-05 10:18:16796浏览

Why Does My PHP Code Return

使用 PHP 获取目录中的文件名:解决“1”难题

在 PHP 中,获取目录中的文件名是一个经常遇到的任务。但是,有些人可能会遇到意外问题,即文件名返回为“1”而不是其实际名称。将 readdir() 函数与 is_dir() 和 opendir() 一起使用时,可能会出现此难题。

代码:

if (is_dir($log_directory)) {
    if ($handle = opendir($log_directory)) {
        while ($file = readdir($handle) !== FALSE) {
            $results_array[] = $file;
        }
        closedir($handle);
    }
}

问题:

迭代 $results_array 的元素时,期望的文件不返回名称。相反,它们被替换为“1”。此行为是由于与 readdir() 工作原理相关的微妙细节造成的。

解决方案:

要纠正此问题,建议绕过 opendir()和 readdir() 并使用 glob() 代替。 glob() 是一个综合函数,为提取目录中的文件名提供了强大的解决方案。

更正的代码:

foreach(glob($log_directory.'/*.*') as $file) {
    ...
}

在此修改后的代码中, glob() 用于遍历 $log_directory 中的文件,返回它们的路径。随后,每个文件路径都被分配给 $file 变量,以便进一步处理或利用。

这种方法规避了 readdir() 的限制并提供了所需的结果 - 实际文件名的列表,而不是“1” '.

以上是为什么在使用 readdir() 时我的 PHP 代码返回'1”而不是文件名?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn