2011-01-16 14 views
6


Ich habe einen Ordner. Ich möchte jede Datei in diesem Ordner in ein Array setzen und danach möchte ich sie alle in einer foreach-Schleife echo.
Was ist der beste Weg, dies zu tun?
Danke!Liste Inhalt des Verzeichnisses (php)

Antwort

0

bearbeiten suchen: dwich Antwort besser ist. Ich werde das nur für Informationen verlassen.

readdir.

<?php 

if ($handle = opendir('/path/to/dir')) { 
    echo "Directory handle: $handle\n"; 
    echo "Files:\n"; 

    while (false !== ($file = readdir($handle))) { 
     echo "$file\n"; 
    } 

    closedir($handle); 
} 
?> 

Hoffe, das hilft.
-Alberto

1

Eine Alternative:

define('PATH', 'files/'); 

$filesArray = array(); 
$filesArray = glob(PATH . '*', GLOB_ONLYDIR); 

Diese Methode können Sie angeben/Filter ein nach Dateityp. Beispiel

define('PATH', 'files/'); 
define('FILE_TYPE', '.jpg'); 

$filesArray = array(); 
$filesArray = glob(PATH . '*' . FILE_TYPE, GLOB_ONLYDIR); 

Sie können auch den vollständigen Pfadnamen in die Datei erhalten, indem Sie den Parameter ‚GLOB_ONLYDIR‘ Entfernen

1

für Dateien und Ordner in Unterordner zu Dies funktioniert. Gibt die Liste der Ordner und die Liste der Dateien mit ihrem Pfad zurück.



    $dir = __DIR__; //work only for this current dir 
    function listFolderContent($dir,$path=''){ 
     $r = array(); 
     $list = scandir($dir); 
     foreach ($list as $item) { 
      if($item!='.' && $item!='..'){ 
       if(is_file($path.$item)){ 
        $r['files'][] = $path.$item; 
       }elseif(is_dir($path.$item)){ 
        $r['folders'][] = $path.$item; 
        $sub = listFolderContent($path.$item,$path.$item.'/'); 
        if(isset($sub['files']) && count($sub['files'])>0) 
         $r['files'] = isset ($r['files'])?array_merge ($r['files'], $sub['files']):$sub['files']; 
        if(isset($sub['folders']) && count($sub['folders'])>0) 
         $r['folders'] = array_merge ($r['folders'], $sub['folders']); 
       } 
      } 
     } 
     return $r; 
    } 
    $list = listFolderContent($dir); 
    var_dump($list['files']); 
    var_dump($list['folders']); 
Verwandte Themen