2014-05-10 2 views
0

j'ai une structure de répertoires comme siRépertoire de numérisation et sous-répertoire d'affichage et son contenu

- images 
-- images1/ 
--- image.jpg 
-- images2/ 
--- image.jpg 
-- images3/ 
--- image.jpg 
-- images4/ 
--- image.jpg 

Disons qu'il ya d'autres fichiers dans les répertoires aussi bien. Je souhaite analyser chaque répertoire, l'afficher ainsi que le contenu spécifique de chaque répertoire. Je souhaite donc afficher un tableau de dossiers, et uniquement des images .jpg et .png mais pas .gif, par exemple.

Comment est-ce que je peux faire ceci? Jusqu'à présent, j'ai ..

public function getImages(){ 

    $path = app_path() . '/images/'; 
    $list = scandir($path); 
    while ($list) { 
     # stuck here... 
    } 
} 

Répondre

0

Si vous souhaitez obtenir des fichiers avec des sous-dossiers à l'intérieur, vous pouvez simplement utiliser RecursiveDirectoryIterator, puis le combiner avec RecursiveIteratorIterator. (Mon Dieu, quel nom c'est). Considérez cet exemple:

$path = 'images'; 
$current_folder = ''; 
$images = array(); 
$dir = new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS); 
$files = new RecursiveIteratorIterator($dir, RecursiveIteratorIterator::SELF_FIRST); 
foreach($files as $key => $value) { 
    if($value->isDir()) { 
     $current_folder = $value->getFilename(); 
     $images[$current_folder] = array(); 
    } else { 
     if($value->getExtension() == 'jpg' || $value->getExtension() == 'png') { 
      $images[$current_folder][] = $value->getFilename(); 
     } 
    } 
} 

ksort($images); 
print_r($images); 

Exemple de sortie:

Array 
(
    [images1] => Array 
    (
     [0] => image.jpg 
    ) 

    [images2] => Array 
    (
     [0] => image.jpg 
    ) 

    [images3] => Array 
    (
     [0] => image.jpg 
    ) 

    [images4] => Array 
    (
     [0] => image.jpg 
    ) 

) 
+0

ce qui est l'utilisation de deux crochets ici .. $ images [CURRENT_FOLDER $] [] ... images seulement $ [$] CURRENT_FOLDER assez? ? –

+0

@CodeLover S'assurer juste, et s'il y a 3 images dans un dossier, vous ne voudriez pas qu'ils écrasent la valeur chaque boucle. C'est pourquoi j'ai attribué et ajouté comme un tableau – user1978142

+0

cela fonctionnera-t-il si j'ajoute $ images [$ current_folder] au lieu de $ images [$ current_folder] [] ?? –

Questions connexes