目录中每个文件的循环代码

Chi*_*ins 97 php filesystems directory image

我有一个图片目录,我想循环并做一些文件计算.它可能只是缺乏睡眠,但我如何使用PHP查看给定目录,并使用某种for循环遍历每个文件?

谢谢!

Emi*_*röm 250

scandir:

$files = scandir('folder/');
foreach($files as $file) {
  //do your work here
}
Run Code Online (Sandbox Code Playgroud)

或者glob可能更适合您的需求:

$files = glob('folder/*.{jpg,png,gif}', GLOB_BRACE);
foreach($files as $file) {
  //do your work here
}
Run Code Online (Sandbox Code Playgroud)

  • @Zero3,该变量仅用于可读性。PHP 将始终在任何 foreach 循环中使用数组的副本,这意味着 scandir() 将仅被调用一次。(并且由于 PHP 使用写时复制,因此这种“复制”也不会出现任何性能问题)。是的,您可以嵌入 scandir() 调用,而不会产生任何性能缺陷。 (2认同)
  • 注意:scandir()包括'.' &'''节点.如果您不想浏览它们,请从scandir()结果中添加一个检查/删除它们 (2认同)

squ*_*rel 61

查看DirectoryIterator类.

从该页面上的一条评论:

// output all files and directories except for '.' and '..'
foreach (new DirectoryIterator('../moodle') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
}
Run Code Online (Sandbox Code Playgroud)

递归版本是RecursiveDirectoryIterator.

  • 这应该是最佳答案,比 scandir 或 glob 更有用,更现代的方法 (2认同)

小智 8

寻找函数glob():

<?php
$files = glob("dir/*.jpg");
foreach($files as $jpg){
    echo $jpg, "\n";
}
?>
Run Code Online (Sandbox Code Playgroud)