对前导数字后跟非数字字符的字符串数组进行排序
我可以使用以下代码获得排序的文件名列表:
$log_files = scandir(LLP_LOG_DIR);
$sorted = sort($log_files);
文件名格式为 X.log,其中 X 是渐进数值。
如何解决获得
0.log
1.log
10.log
11.log
2.log
3.log
所需结果
0.log
1.log
2.log
3.log
[..]
9.log
10.log
11.log
[..]
的问题我可以剥离“.log”字符串,对它们进行排序等,但最有效的方法是什么?
I can get a sorted filename list with the following code:
$log_files = scandir(LLP_LOG_DIR);
$sorted = sort($log_files);
the filename format is X.log, where X is a progressive numeric value.
How can I solve the problem of getting
0.log
1.log
10.log
11.log
2.log
3.log
where the wanted result is
0.log
1.log
2.log
3.log
[..]
9.log
10.log
11.log
[..]
I can strip the ".log" string, sort them etc, but what is the most efficient way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试使用 nasort 代替,
try natsort instead,
将
sort
的第二个参数设置为SORT_NUMERIC
数字排序:请注意,
sort
对第一个参数给定的变量数组进行排序。sort
的返回值只是一个布尔值。Set the second parameter of
sort
toSORT_NUMERIC
to have numeric sorting:And note that
sort
sorts the array of the variable given with the first parameter. The return value ofsort
is just a boolean value.尝试使用 natcasesort 代替。
因为 natsort 区分大小写。
Try natcasesort instead.
because natsort is case sensitive.