在其中查找目录名称和图像名称

时间:2016-02-08 10:32:31

标签: php

我正在使用这个简短的脚本列出特定文件夹中的图像

$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/>';
  }
}

4 个答案:

答案 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/>';
  }
}

无论如何,感谢大家。