2011-10-07 18 views
10

Đây là phần bắt đầu của mã của tôi để liệt kê các file trong một thư mục:PHP: Làm thế nào để liệt kê các file trong một thư mục mà không cần thư mục con niêm yết

$files = scandir($dir); 
$array = array(); 
foreach($files as $file) 
{ 
    if($file != '.' && $file != '..' && !is_dir($file)){ 
      .... 

Tôi đang cố gắng để liệt kê tất cả các file trong một thư mục mà không niêm yết thư mục con. Mã đang hoạt động nhưng hiển thị cả tệp và thư mục. Tôi đã thêm !is_dir($file) như bạn thấy trong mã của tôi ở trên, nhưng kết quả vẫn như cũ.

Trả lời

18

Nó phải là như thế này, tôi nghĩ rằng:

$files = scandir($dir); 
foreach($files as $file) 
{ 
    if(is_file($dir.$file)){ 
     .... 
+0

ahhh, đúng vậy. Thanksss – Pinkie

+1

Kể từ '.' và '..' là các thư mục, "$ file! = '.' && $ file! = '..' && "là dư thừa trong biểu thức. Và seperator dir đuôi không tạo ra sự khác biệt nào. – symcbean

+0

nhờ @symcbean. Bạn đúng. Tôi đã xóa chúng. – Pinkie

8

Chỉ cần sử dụng is_file.

Ví dụ:

foreach($files as $file) 
{ 
    if(is_file($file)) 
    { 
     // Something 
    } 
} 
+0

tôi có thể, nhưng đối với ví dụ cụ thể của tôi, tôi muốn biết tại sao is_dir() đã không làm việc. Cảm ơn +1 – Pinkie

1

Thật là một nỗi đau cho một cái gì đó nên có vẻ đơn giản! Không có gì làm việc cho tôi ... Để có được kết quả, tôi cho rằng tên tệp có phần mở rộng mà nó phải có trong trường hợp của tôi.

if ($handle = opendir($opendir)) { 
    while (false !== ($entry = readdir($handle))) { 
     $pos = strpos($entry, '.'); 
     if ($entry != "." && $entry != ".." && is_numeric($pos) ) { 

............ nhập tốt

+0

tốt, bạn chỉ ra rằng, nhưng vẫn còn, có những tập tin allday hàng ngày mà không có dấu chấm trong tên của họ. – dachi

1

này sẽ quét các tập tin sau đó kiểm tra xem. hoặc .. nằm trong một mảng. Sau đó đẩy các tệp ngoại trừ. và .. trong mảng new [].

Hãy thử điều này:

$scannedFiles = scandir($fullPath); 
$files = []; 

foreach ($scannedFiles as $file) { 
    if (!in_array(trim($file), ['.', '..'])) { 
     $files[] = $file; 
    } 
} 
+0

Xin chào và chào mừng bạn đến vớiStackOverflow. Vui lòng thêm một số giải thích cho mã. – Chaithanya

Các vấn đề liên quan