[英]scandir - sort numeric filenames
做了一些搜索,但似乎无法找到我正在寻找的确切答案。
我想使用'scandir($ dir)'来输入带有编号文件名的文件,但要正确排序。 例如,文件名是:
1-something.ext
2-something-else.ext
3-a-third-name.ext
.
.
.
10-another-thing.ext
11-more-names.ext
我遇到的问题是10-a-fourth-thing.ext将显示在2-something-else.ext之前。 我想找到一种更好的方法来解决这个问题,而不是在所有文件名前面引入前导'0'。
有什么想法吗? 谢谢。
natsort
正是你所需要的。
使用SORT_NUMERIC
sort
也适用于以数字开头的文件名,但如果前面也没有数字的名称也会中断(所有非数字前缀的名称将在数字前缀名称之前排序,并且它们的顺序相对于彼此将是随机的而不是字母的)。
你可以使用这样的排序:
sort($arr, SORT_NUMERIC); // asuming $arr is your array
如果你想重新分配密钥(natsort没有这样做),请使用usort()结合strnatcmp()或strnatcasecmp():
usort($arr, 'strnatcmp'); // Or 'strnatcasecmp' for case insensitive
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.