PHP-PHP 数组元素按自然序数排序的问题

PHP-PHP 数组元素按自然序数排序的问题

瑾兮 发布于 2017-08-13 字数 763 浏览 1044 回复 4

看到 rails 的db migrration 中使用时间戳来计算 迁移的版本号,在PHP中该如何使用时间戳的大小对 文件名进行排序,比如

对于下面的元素:
1329884406_cccxcx
1329884408_cccxcx
1329884409_cccxcx
1329884410_cccxcx
1329884411_cccxcx
1329884412_cccxcx
1329884413_cccxcx
1329884414_cccxcx
1329884415_cccxcx
1329884416_cccxcx
1329884417_cccxcx
1329884418_cccxcx
1329884419_cccxcx
1329884420_cccxcx
1329884421_cccxcx
1329884422_cccxcx
1329884423_cccxcx
1329884424_cccxcx
1329884425_cccxcx
1329884426_cccxcx

我想 按 _前面的 数字的大小来排序,请问PHP中如何进行按 "自然序数" 来排序呢

自然序数 指 按常规的 数字大小来排序,而不是根据字符串 ascii码的大小来排序

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜柠檬 2017-11-03 4 楼

php 有这样的函数

natcasesort() 用自然排序算法对数组进行不区分大小写字母的排序
natsort() 用自然排序算法对数组排序

泛泛之交 2017-09-24 3 楼

我说下思路吧,把这些字符串放在数组里,用冒泡排序就可以呀,就是比大小时,用intval()转换为数字即可。

清晨说ぺ晚安 2017-09-23 2 楼

如果说你的文件名都是怎么规律的话,
我觉的可以直接获取到文件名后,
遍历文件名同时对文件直接intval,

 for(...){
$arr[$i]=intval('1329884406_cccxcx');
}

因为这样直接会把你的后面字符串给去掉留下数字,
然后你就可以排序了...

夜无邪 2017-09-08 1 楼

sort就可以实现

$arr = array('1329884408_cccxcx', '1329884406_cccxcx');
sort($arr);
print_r($arr);
exit;

打印结果:Array ( [0] => 1329884406_cccxcx [1] => 1329884408_cccxcx )

//如果前面数字一样,会按照后面的字母排:
$arr = array('1329884406_zccxcx', '1329884406_cccxcx');
打印结果:Array ( [0] => 1329884406_cccxcx [1] => 1329884406_zccxcx )