Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

', $file, // or basename($file) for just the filename w\out path date('F d Y, H:i:s', filemtime($file))); }

Lưu ý rằng vì bạn đã gọi

$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
1 khi sắp xếp các tệp, nên không có chi phí bổ sung nào khi gọi lại trong vòng lặp foreach do bộ đệm stat.

Walf

7.9012 Huy hiệu vàng40 Huy hiệu bạc58 Huy hiệu đồng2 gold badges40 silver badges58 bronze badges

Đã trả lời ngày 19 tháng 4 năm 2010 lúc 11:54Apr 19, 2010 at 11:54

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

GordongordonGordon

308K72 Huy hiệu vàng527 Huy hiệu bạc552 Huy hiệu đồng72 gold badges527 silver badges552 bronze badges

9

Bạn cần đặt các tệp vào một mảng để sắp xếp và tìm tệp được sửa đổi cuối cùng.

$files = array();
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
           $files[filemtime($file)] = $file;
        }
    }
    closedir($handle);

    // sort
    ksort($files);
    // find the last modification
    $reallyLastModified = end($files);

    foreach($files as $file) {
        $lastModified = date('F d Y, H:i:s',filemtime($file));
        if(strlen($file)-strpos($file,".swf")== 4){
           if ($file == $reallyLastModified) {
             // do stuff for the real last modified file
           }
           echo "
"; } } }

Không được kiểm tra, nhưng đó là cách làm điều đó.

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

Đã trả lời ngày 19 tháng 4 năm 2010 lúc 11:59Apr 19, 2010 at 11:59

EliaSeliaselias

1.4617 Huy hiệu bạc13 Huy hiệu đồng7 silver badges13 bronze badges

8

Dưới đây là một ví dụ sử dụng lớp đệ quy. Đó là một cách thuận tiện để lặp lại một cách đệ quy trên hệ thống tệp.

$output = array();
foreach( new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator( 'path', FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ) ) as $value ) {
        if ( $value->isFile() ) {
            $output[] = array( $value->getMTime(), $value->getRealPath() );
        }
}

usort ( $output, function( $a, $b ) {
    return $a[0] > $b[0];
});

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

Đã trả lời ngày 2 tháng 4 năm 2015 lúc 19:32Apr 2, 2015 at 19:32

DanijeldanijelDanijel

12.1k4 Huy hiệu vàng36 Huy hiệu bạc54 Huy hiệu đồng4 gold badges36 silver badges54 bronze badges

4

$files = array_diff(scandir($dir,SCANDIR_SORT_DESCENDING), array('..', '.'));
print_r($files);

Barbsan

3.36811 Huy hiệu vàng20 Huy hiệu bạc28 Huy hiệu đồng11 gold badges20 silver badges28 bronze badges

Đã trả lời ngày 6 tháng 2 năm 2018 lúc 16:56Feb 6, 2018 at 16:56

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

WynnwynnWynn

1551 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges

1

Tôi sử dụng mã được đề xuất chính xác của bạn chỉ với một vài dòng bổ sung. Ý tưởng ít nhiều giống với ý tưởng được đề xuất bởi Elias, nhưng trong giải pháp này không thể có xung đột trên các khóa vì mỗi tệp trong thư mục có một tên tệp khác nhau và do đó, việc thêm nó vào khóa giải quyết các xung đột.

Phần đầu tiên của khóa là chuỗi DateTime được định dạng theo cách mà tôi có thể so sánh về mặt từ vựng hai trong số chúng.

if ($handle = opendir('.')) {
    $result = array();
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $lastModified = date('F d Y, H:i:s', filemtime($file));
            if(strlen($file)-strpos($file, ".swf") == 4) {
                $result [date('Y-m-d H:i:s', filemtime($file)).$file] =
                    "
"; } } } closedir($handle); krsort($result); echo implode('', $result); }

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

Đã trả lời ngày 16 tháng 3 năm 2016 lúc 10:17Mar 16, 2016 at 10:17

Đối với bất kỳ ai tập trung một cách tuyệt vọng vào hiệu suất tối ưu hóa vi mô (giảm thiểu tổng số các cuộc gọi chức năng lặp), bạn có thể lưu trữ thời gian sửa đổi tệp là phần tử đầu tiên và tên tệp là phần tử thứ hai của một mảng hàng.

Khi điều này được thiết lập, bạn chỉ có thể gọi

$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
2 và thuật toán sẽ so sánh trước lần trước, sau đó phá vỡ các mối quan hệ bằng cách sử dụng các tên tệp duy nhất.

Mã: (Demo)

$result = [];
foreach (glob('path/to/files/*.swf') as $file) {
    $result[] = [filemtime($file), $file];
}
sort($result);
var_export($result);

*Lưu ý: Nếu bạn không muốn đường dẫn được chuẩn bị cho tên tệp (

$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
3), thì hãy sử dụng
$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
4 để chuyển vào thư mục được nhắm mục tiêu trước khi gọi
$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
5.

Tất nhiên, sử dụng tiêu chuẩn chứng khoán

$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
2 có nghĩa là bạn bị khóa ASC cho tất cả các yếu tố trong tất cả các hàng. Đồng thời,
$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
7 sẽ sắp xếp theo tất cả các cột theo thứ tự Desc. Những kết quả này sẽ không thỏa mãn trong một số trường hợp. Tôi cho rằng bạn có thể hack thời gian phân loại mod là trái ngược với bảng chữ cái của tệp bằng cách lưu trữ thời gian mod dưới dạng số nguyên âm. ... Tôi đang lạc đề.

Đã trả lời ngày 1 tháng 1 lúc 3:59Jan 1 at 3:59

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

Mickmackusamickmackusamickmackusa

39.5K11 Huy hiệu vàng76 Huy hiệu bạc117 Huy hiệu đồng11 gold badges76 silver badges117 bronze badges

Làm thế nào để sắp xếp các tệp theo ngày trong PHP?

Để sắp xếp các tệp trong một thư mục, trước tiên chúng ta nên sao chép các tên tệp từ thư mục đã nói thành một mảng và sau đó xác định chức năng sắp xếp tùy chỉnh của chúng tôi để sắp xếp các tệp đó vào ngày sửa đổi cuối cùng.Usort () của PHP là chức năng như vậy mà chúng ta có thể sử dụng để sắp xếp các mảng bằng cách chúng ta xác định.first copy the filenames from the said directory to an array and then define our custom sorting function to sort those files by last modified date. PHP's usort() is such function which we can use to sort arrays by the way we define.

Làm thế nào để sắp xếp các tệp trong PHP?

Mảng phân loại PHP..
Sắp xếp () - Sắp xếp các mảng theo thứ tự tăng dần ..
rsort () - Sắp xếp các mảng theo thứ tự giảm dần ..
asort () - Sắp xếp các mảng liên kết theo thứ tự tăng dần, theo giá trị ..
Ksort () - Sắp xếp các mảng liên kết theo thứ tự tăng dần, theo khóa ..

61

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi hiện có một tập lệnh cho phép tôi xuất danh sách các tệp bên trong cùng một thư mục.

Đầu ra hiển thị các tên và sau đó tôi đã sử dụng hàm filemtime() để hiển thị ngày khi tệp được sửa đổi.

Làm thế nào tôi sẽ sắp xếp đầu ra để hiển thị tệp được sửa đổi mới nhất?

Đây là những gì tôi có bây giờ:

if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            $lastModified = date('F d Y, H:i:s', filemtime($file));
            if(strlen($file)-strpos($file, ".swf") == 4) {
                echo "$file - $lastModified";
            }
        }
    }
    closedir($handle);
}

Hướng dẫn php sort files by date - php sắp xếp các tập tin theo ngày

Hỏi ngày 19 tháng 4 năm 2010 lúc 11:47Apr 19, 2010 at 11:47

Điều này sẽ nhận tất cả các tệp trong đường dẫn/đến/tệp với phần mở rộng .swf vào một mảng và sau đó sắp xếp mảng đó theo mtime của tệp

$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});

Trên đây sử dụng hàm Lambda và yêu cầu PHP 5.3. Trước 5.3, bạn sẽ làm

usort($files, create_function('$a,$b', 'return filemtime($b)-filemtime($a);'));

Nếu bạn không muốn sử dụng chức năng ẩn danh, bạn có thể xác định tốt cuộc gọi lại là hàm thông thường và chuyển tên chức năng sang

$files = glob('path/to/files/*.swf');
usort($files, function($a, $b) {
    return filemtime($b) - filemtime($a);
});
0 thay thế.

Với mảng kết quả, sau đó bạn sẽ lặp lại các tệp như sau:

foreach($files as $file){
    printf('
%1$s %2$s
$file$lastModified
$file$lastModified