我现在用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));
}