如何在PHP中根据文件名的两个部分对文件进行排序和r排序


How do I sort and rsort files based on two parts of the filename in PHP?

我现在用php回显给定目录下的所有文件名。
这些文件有一个命名约定:
出生年份_姓名



1980个_doejohn.php1980年_elfsarah.php
1981年_fitzjack.php
1983年_guptasiva.php

我需要首先按年对它们排序,并在每一年进行排序,因此输出应该是:
1983年_guptasiva.php
1981年_fitzjack.php
1980年_doejohn.php
1980年_elfsarah.php

我当前的(非排序)代码是:

<?php
$filename = glob("about/*.php");
rsort($filename);
    foreach ($filename as $filenamein) {
        echo ($filenamein) . "<br>";
    }
?>

我应该如何修改它使它排序我想要的方式?请提供完整的代码建议,包括

您需要为此编写自己的比较函数并使用ussort。如此:

$filename = glob("about/*.php");
usort($filename, 'filename_cmp');
foreach($filename as $filenamein)
    echo ($filenamein) . '<br />';
function filename_cmp($a, $b){
    $diff = (int)substr($b, 0, 4) - (int)substr($a, 0, 4);
    if($diff !== 0)
        return $diff;
    return strcmp(substr($a,5), substr($b,5));
}