2009-07-02 26 views
5

Chúng tôi có thể nhận được các tập tin trong một thư mục trong PHP bởi

$files = new DirectoryIterator() 

sau đó là có một cách dễ dàng để sắp xếp các mục trong một thứ tự cụ thể cho hiển thị chúng? cảm ơn.

+0

@ 動靜 能量 - Bạn là người Trung Quốc? –

+2

[salathe/spl-examples - Phân loại Iterators] (https://github.com/salathe/spl-examples/wiki/Sorting-Iterators) – hakre

Trả lời

9

Dường như không có cách nào để sắp xếp dữ liệu trong vòng lặp.

Bạn có thể đặt dữ liệu hiển thị vào mảng trung gian, với khóa của giá trị bạn muốn sắp xếp theo và gọi ksort() trên mảng. Điều này sẽ mất hai đi qua các dữ liệu tuy nhiên.

$path = "."; 
$files = new DirectoryIterator($path); 
$files_array = array(); 

while($files->valid()) { 
     // sort key, ie. modified timestamp 
     $key = $files->getMTime(); 
     $data = $files->getFilename(); 
     $files_array[$key] = $data; 
     $files->next(); 
} 
ksort($files_array); 
foreach($files_array as $key => $file){ 
    print $key . " => " . $file . "\n"; 
} 

chỉnh sửa:

nếu bạn đặt tất cả các thông tin mà bạn muốn đầu ra cho các tập tin trong các giá trị mảng, bạn chỉ có thể nổ tung() mảng sau đó, thay vì lặp qua các dữ liệu một lần lần nữa.

-4
$files = new DirectoryIterator($path); 
$i = 0; 
$paths = array(); 
while($files->valid()) { 
    $paths[$i++] = $files->getFileName(); 
    $files->next(); 
} 
sort($paths) 

Có thể là những gì bạn đang tìm kiếm, bạn luôn có thể áp dụng chức năng sắp xếp để sắp xếp các đường dẫn tùy theo sở thích của bạn sau đó.

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