2012-03-27 44 views
1

使用以下代码,我最多可以显示10张图像。我想要的是能够显示文件夹中的所有图像,而不会经历无限循环,并且无需测试每个循环中是否存在图像文件。显示文件夹中的所有图像而不测试文件存在

for($i=1; $i<=10; $i++) 
{ 
$filename = "/folder/$i.jpg"; 
echo " 
    <img title='$i' src='$filename'> 
"; 
} 

假设我不知道有多少的图像出现在文件夹中,而我不想在数据库中存储这些信息,你会怎么显示所有的文件名是结束整数图像扩展名为.jpg

+0

使用'水珠()',卢克。 – zerkms 2012-03-27 04:25:41

+0

我会使用RecursiveDirectoryIterator http://au.php.net/manual/en/class.recursivedireiteiteite.php – 2012-03-27 04:38:00

+0

@ b.b3rn4rd,你可以放下来作为答案? – 2012-03-27 04:43:45

回答

2
//path to directory to scan 

$directory = "/folder/"; 

//get all image files with a .jpg extension. 

$images = glob($directory . "*.jpg"); 

UPDATE 参考:http://php.net/manual/en/function.glob.php

+1

为什么不链接到[官方文档](http://php.net/glob),而不是一些未知的网站? – zerkms 2012-03-27 04:27:42

+0

谢谢,引用改变了。 – 2012-03-27 04:31:47

+0

看起来可行。谢谢! – 2012-03-27 04:34:07

4

我会用RecursiveDirectoryIterator http://au.php.net/manual/en/class.recursivedirectoryiterator.php 如果使用使用水珠,你将不得不手动处理递归。

$path = '/path/to/folder'; 

/* @var $file SplFileInfo */ 
foreach (new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($path)) as $file) { 
    if ($file->isFile() 
     && in_array(strtolower($file->getExtension()), array('jpg', 'png', 'gif'))) { 
     echo $file->getPathname()."\n"; 
    } 
} 

请注意:SplFileInfo :: getExtension可从PHP 5.3.6

+0

从链接,这是如何工作不是很清楚。你能用一个例子来扩展你的答案吗?谢谢。这种方式比'glob()'函数更好吗? – 2012-03-27 05:01:54

+0

我已经在我的回答 – 2012-03-27 10:49:26

+0

中看到了一个例子。为你+1。如果我正在搜索隐藏在多个文件夹中的文件,此功能将派上用场。截至目前,Glob()似乎已经足够满足我的要求。无论如何,谢谢你向我展示替代品:) – 2012-03-28 07:33:55

相关问题