-2

I'm fetching all the images in a directory using PHP, but I'm looking for a way to avoid creating several functions for this. My code looks like this:

function getAllImages() {
    $dir = "images/work/*";  
    foreach(glob($dir) as $file)  
    {  
        echo '<img src="'.$file.'">';
    }  
}

And I'm calling the function in an external file

getAllImages();

Thing is; the files need to be in subfolders to the "work" directory, so basically one subdirectory could be images/work/project1, which would contain images for a project called "project1".

The easy way for me to do this is to create multiple functions like "getAllImagesProject1" etc, but what I'd like is to somehow use parameters (or something similar) to access the subdirectory, such as

getAllImages('project1');

I'm not a code wizard in any way so I'd love if someone knew how to get this to work! THANK YOU for reading this!

viktort
  • 1
  • 1
  • Simply let the method take one argument, $dir? – hank Feb 24 '13 at 19:18
  • this question has been answered at least a hundred times on here. I recommend this answer: http://stackoverflow.com/questions/2014474/php-read-sub-directories-and-loop-through-files-how-to – Brian Vanderbusch Feb 24 '13 at 19:26

2 Answers2

1

Maybe you should try this:

function getAllImages($directory) {
    $dir = "images/work/{$directory}/*";  
    foreach(glob($dir) as $file)  
    {  
        echo '<img src="'.$file.'">';
    }  
}
Cysioland
  • 1,126
  • 1
  • 9
  • 21
1

I think you should also validate your images before you output them

function getAllImages($path) {
    $it = new FilesystemIterator($path, FilesystemIterator::SKIP_DOTS);
    $it = new RegexIterator($it, '#\.(gif|png|jpg|jpeg)$#i');
    foreach ( $it as $img )
        @getimagesize($img) and printf("<img src='%s' />", $img);
}
Baba
  • 94,024
  • 28
  • 166
  • 217