我正在使用这个简短的脚本列出特定文件夹中的图像
$dirname = "images/gallery/Project 1/";
$images = glob($dirname."*.jpg");
foreach($images as $imagesm) {
print "$imagesm";
}
但是,在文件夹库中我有3个文件夹(项目1,项目2,项目3),我想让脚本自动浏览每个文件夹并从中打印图像。
例如:
项目1 - 图片1 - 图片2 - 图片3
项目2 - 图片1 - 图片2 - 图片3
项目3 - 图片1 - 图片2 - 图片3
我知道我可以复制每个文件夹的脚本,但希望它能够自动发生,因为我可能会在将来添加文件夹Project 4
我想我只需要循环浏览文件夹,但不知道怎么做。 试图这样做,但它没有工作
$dir = "images/gallery/";
$cdir = scandir($dir);
foreach ($cdir as $dirname)
{
$newdir="images/gallery/$dirname";
$images = glob($newdir."*.jpg");
foreach($images as $imagesm) {
print "$imagesm";
}
}
如果有人有兴趣,这是最终的工作代码
$mydir = 'images/gallery';
$subdirs = array_filter(glob($mydir . '/*'), 'is_dir');
foreach($subdirs as $dir){
echo '<b>'.basename($dir).'</b><br>';
$images = glob($dir . '/*.jpg');
foreach($images as $image)
{
echo basename($image).'<br/>';
}
}
答案 0 :(得分:1)
您可以制作一个$numFolders
变量,即您拥有的文件夹数量,然后使用a for
loop:
$numFolders = 3; //change this to reflect the number of folders
for($i = 1; $i <= $numFolders; $i++){
$dirname = "images/gallery/Project $i/";
$images = glob($dirname."*.jpg");
foreach($images as $imagesm) {
print "$imagesm";
}
}
这将遍历代码,遍历每个Project $i
目录,直到达到$numFolders
的限制。
对于未知文件夹名称:
$root = "images/gallery/"; //your root folder
$folders = scandir($root); //get all file/folder names
foreach($folders as $f){
//Check that $f is a valid directory
if($f != "." && $f != ".." && is_dir($f)){
//Get all files in the directory $f
$images = glob($root.$f."*.jpg");
//Print all images
foreach($images as $i){
print $i;
}
}
}
答案 1 :(得分:0)
试试这个
function dirToArray($dir) {
$result = array();
$allowedtypes = array('jpg','png','jpeg');
$cdir = scandir($dir);
foreach ($cdir as $key => $value)
{
if (!in_array($value,array(".","..")))
{
if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
{
$result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
}
else if(in_array(pathinfo($value, PATHINFO_EXTENSION),$allowedtypes))
{
$result[] = $value;
}
}
}
return $result;
}
$dirname = "images/gallery";
$gallery_arr = array_filter(dirToArray($dirname));
echo '<pre>';print_r($gallery_arr);exit;
来源: - php.net
答案 2 :(得分:0)
WindowsFormsControlLibrary/Properties/licenses.licx
答案 3 :(得分:0)
好的,我采取了一些不同的方法......而且我相信简单。这是我做的脚本实际上完全按照我在第一篇文章中提到的那样
$mydir = 'images/gallery';
$subdirs = array_filter(glob($mydir . '/*'), 'is_dir');
foreach($subdirs as $dir){
echo '<b>'.basename($dir).'</b><br>';
$images = glob($dir . '/*.jpg');
foreach($images as $image)
{
echo basename($image).'<br/>';
}
}
无论如何,感谢大家。