目录中每个文件的循环代码
答
尝试GLOB()
$dir = "/etc/php5/*";
// Open a known directory, and proceed to read its contents
foreach(glob($dir) as $file)
{
echo "filename: $file : filetype: " . filetype($file) . "<br />";
}
答
从该网页上的评论之一:
// output all files and directories except for '.' and '..'
foreach (new DirectoryIterator('../moodle') as $fileInfo) {
if($fileInfo->isDot()) continue;
echo $fileInfo->getFilename() . "<br>\n";
}
的递归版本是RecursiveDirectoryIterator。
+0
这应该是最好的答案,比scandir或glob更有用和更现代的方法 – 2017-05-26 13:26:36
答
在foreach循环中使用glob函数来执行任何选项。我还在下面的例子中使用了file_exists函数来检查目录是否存在,然后再继续。
$directory = 'my_directory/';
$extension = '.txt';
if (file_exists($directory)) {
foreach (glob($directory . '*' . $extension) as $file) {
echo $file;
}
}
else {
echo 'directory ' . $directory . ' doesn't exist!';
}
喜欢glob()函数,从来没有见过一个之前。谢谢! – Chiggins 2011-05-27 17:34:46
'$ files'变量是否用于避免在'foreach'循环中多次调用'scandir()'?或者我可以直接嵌入它而没有任何副作用? – Zero3 2015-05-10 15:57:38
@零3,该变量仅用于可读性。 PHP将始终与任何foreach循环中的数组副本一起工作,这意味着scandir()只会被调用一次。 (因为PHP使用copy-on-write,所以你不会因为这个“复制”而出现任何性能问题)。是的,您可以嵌入scandir()调用,而不会有任何性能缺陷。 – 2015-05-11 12:07:09