【发布时间】:2011-09-03 13:47:06
【问题描述】:
我有一个图片目录,我想循环并对其进行一些文件计算。可能只是睡眠不足,但我将如何使用 PHP 在给定目录中查找,并使用某种 for 循环遍历每个文件?
谢谢!
【问题讨论】:
标签: php image filesystems directory
我有一个图片目录,我想循环并对其进行一些文件计算。可能只是睡眠不足,但我将如何使用 PHP 在给定目录中查找,并使用某种 for 循环遍历每个文件?
谢谢!
【问题讨论】:
标签: php image filesystems directory
【讨论】:
$files 变量是否用于避免在foreach 循环中多次调用scandir()?或者我可以直接嵌入没有任何副作用?
查看DirectoryIterator 类。
来自该页面上的一个 cmets:
// output all files and directories except for '.' and '..'
foreach (new DirectoryIterator('../moodle') as $fileInfo) {
if($fileInfo->isDot()) continue;
echo $fileInfo->getFilename() . "<br>\n";
}
【讨论】:
寻找函数glob():
<?php
$files = glob("dir/*.jpg");
foreach($files as $jpg){
echo $jpg, "\n";
}
?>
【讨论】:
试试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 />";
}
【讨论】:
filetype() 返回文件的类型。因此可能的结果是file, dir, char, block, ...。如果您想知道文件的内容类型,可以使用 mime_content_type() 之类的内容。
在 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!';
}
【讨论】: