按数字顺序列出文件而不是字母?

vol*_*olk 3 php unix linux ffmpeg

基本上,我有一堆带有公共前缀(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.

hak*_*kre 8

您可以将它们放在一个数组中,并使用natsortDocs函数对数组进行排序:

$array = array('logo1','logo2','logo12');
natsort($array);
Run Code Online (Sandbox Code Playgroud)

给出(演示):

array(3) {
  [0]=>
  string(5) "logo1"
  [1]=>
  string(5) "logo2"
  [2]=>
  string(6) "logo12"
}
Run Code Online (Sandbox Code Playgroud)

您正在寻找的订单通常称为自然订单.

或者,您可以为数字添加前缀,例如,如果您已经使用sprintf命名文件,那么标准排序顺序仍然有效:

`logo%03d.jpg`
Run Code Online (Sandbox Code Playgroud)

哪会产生

logo001.jpg
Run Code Online (Sandbox Code Playgroud)

小数1.