使用 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中文网其他相关文章!