PHP按数字名称对数组进行排序

时间:2014-12-23 09:24:09

标签: php arrays codeigniter

使用Codeigniter创建网站。我使用codeigniters目录帮助程序来获取目录中所有文件的文件名:

$this->load->helper('directory'); $files = directory_map('directory_name/', 1);

这一切都按预期工作,我得到了目录中的文件列表 - print_r($ files)证明了这一点。

但是,文件名都以数值开头:

 1_firstfile.doc  
  2_nextfile.doc  
  3_another.exe  
  ...   ...  
  11_thisfile.txt  
  12_filename.pdf

我的问题是文件以我想要的不同顺序返回。我希望他们按照上面的顺序归还,但他们会像这样返回:

 1_firstfile.doc    
  11_thisfile.txt  
  12_filename.pdf  
  2_nextfile.doc   
  3_another.exe 

显然,它们按字母顺序返回,但我需要按数字顺序返回它们。

我试过$files = sort($files,1)但似乎只是清空了数组。 因此,除了更改文件名外,如何让数组按照我要求的顺序排列?

1 个答案:

答案 0 :(得分:3)

所有sort()函数都是“按引用传递”,因此它实际上直接修改了参数,返回成功或失败状态,所以

$files = sort($files)

$files进行排序,然后将成功状态(布尔值为true / false)分配给$files

简单地做

sort($files)

请注意,要按文件名的数字部分进行干净排序,您应该使用带有SORT_NATURAL标记的sort()natsort()