基本上,我有一堆带有公共前缀(logo%d.jpg
)的文件。
当使用ls
查看它们或甚至在PHP中循环目录时,我没有按数字顺序接收它们,这意味着logo1.jpg, logo2.jpg
。
相反,我按字母顺序排列,如:
logo1.jpg, logo10.jpg, logo11.jpg ... logo 19.jpg, logo2.jpg
(而不是logo20.jpg
)
有没有办法按数字顺序输出它们? logo1, logo2, logo3 .. etc.
答案 0 :(得分:8)
您可以将它们放在一个数组中,并使用natsort
Docs函数对数组进行排序:
$array = array('logo1','logo2','logo12');
natsort($array);
给出了(Demo):
array(3) {
[0]=>
string(5) "logo1"
[1]=>
string(5) "logo2"
[2]=>
string(6) "logo12"
}
您正在寻找的订单通常称为自然订单。
或者,您可以为数字添加前缀,例如:如果您已经使用sprintf
命名文件,那么标准排序顺序仍然有用:
`logo%03d.jpg`
哪会生成
logo001.jpg
表示小数1
。
答案 1 :(得分:2)
加载到数组中并使用natsort()
答案 2 :(得分:1)
如果您正在使用ls
,就像您说的那样......
ls | sort -n
会做到这一点。