如何反转按文件名排序?目前它按字母/数字顺序显示所有文本文件,但我试图让它按降序显示。现在,我已经...
<?php
foreach (glob("*.txt") as $filename) {
include($filename);
}
?>
我对 PHP 还很陌生,但我尝试了添加数组的 usort,但这只是导致它只显示 1 个文本文件,所以要么不起作用,要么我只是编码错误。
您可以使用
array_reverse
:
foreach(array_reverse(glob("*.txt")) as $filename) { ...
只是对@Foo Bah的答案的补充: 在处理目录中的文件名时,我通常添加
natsort
以防止出现典型的排序情况:
- 'image1.png'
- 'image10.png'
- 'image2.png'
natsort 是一种更加用户友好的排序算法,将保留自然编号:
- 'image1.png'
- 'image2.png'
- 'image10.png'
所以 FooBah 的答案就变成了:
$list = glob("*.jpg");
natsort($list);
foreach(array_reverse($list) as $filename) { ...
请注意,
natsort
正在修改传入参数的数组,并且仅返回一个布尔值。
为了获得最佳性能,我建议在处理大型数组时避免不必要的数组处理(即排序或反转)。
由于 glob() 函数默认按升序对文件名进行排序,因此您可以简单地以相反的顺序循环遍历结果数组,从而避免任何其他处理:
<?php
for($result = glob("*.txt"), $i = count($result); $i > 0; --$i) {
include($result[$i-1]);
}