2011-01-16 40 views
6


Tôi có một thư mục. Tôi muốn đặt mọi tập tin trong thư mục này vào một mảng và sau đó tôi muốn lặp lại tất cả chúng trong một vòng lặp foreach.
Cách tốt nhất để làm điều này là gì?
Cảm ơn!Danh sách nội dung của thư mục (php)

Trả lời

0

Edit: câu trả lời dwich là tốt hơn. Tôi sẽ để lại thông tin này.

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); 
} 
?> 

Hy vọng điều này sẽ hữu ích.
-Alberto

1

Một lựa chọn:

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

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

Phương pháp này cho phép bạn chỉ định/lọc một theo loại file. Ví dụ:

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

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

Bạn cũng có thể có được tên đường dẫn đầy đủ đến tập tin bằng cách loại bỏ các tham số 'GLOB_ONLYDIR'

1

này hoạt động cho các tập tin và thư mục trong thư mục con quá. Trả về danh sách các thư mục và danh sách các tập tin với đường dẫn của chúng.



    $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']); 
Các vấn đề liên quan