我的PHP显然不是很好,我使用一种看似很慢的方法从名为gallery /的文件夹中的子文件夹中检索图像。理想情况下,我希望从任何一个子目录中随机选择单个图像(不是每个图像),并以小HTML标签显示。我知道glob(),但是我不能按照我想要的方式工作,所以这就是我用来从子文件夹中拉出每一个图像的内容:
<?php
echo "<html><head></head><body>";
function ListFiles($dir) {
if($dh = opendir($dir)) {
$files = Array();
$inner_files = Array();
while($file = readdir($dh)) {
if($file != "." && $file != ".." && $file[0] != '.') {
if(is_dir($dir . "/" . $file)) {
$inner_files = ListFiles($dir . "/" . $file);
if(is_array($inner_files)) $files = array_merge($files, $inner_files);
} else {
array_push($files, $dir . "/" . $file);
}
}
}
closedir($dh);
shuffle($files);
return $files;
}
}
foreach (ListFiles('gallery') as $key=>$file){
echo "<div class=\"box\" style=\"margin: 3px;border: 1px dotted #999; display: inline- block; \"><img src=\"$file\"/></div>";
}
echo "</body></html>";
?>
这很好但是它不是很可扩展,我知道可以在这里使用glob。
答案 0 :(得分:0)
请参阅RecursiveDirectoryIterator并查看相关示例。
答案 1 :(得分:0)
好吧,所以这就是我所做的,而且效果很好......
// Collects every path name under gallery/ for a .png
$imgs = glob("gallery/*/*.png");
//Mixes up the array
shuffle($imgs);
//Print it out just to make sure
//print_r($imgs);
//array_rand returns single key values, making it perfect to return a *single* image
$k = array_rand($imgs);
$v = $imgs[$k];
//Print out images
echo "<div class=\"box\" style=\"margin: 3px;border: 1px dotted #999; display: inline-block; \"><img src=\"$v\"/></div>";