我有一个数组:
Array ( [0] => ../files/flv/1 [1] => ../files/flv/10 [2] => ../files/flv/2 [3] => ../files/flv/3 [4] => ../files/flv/4 [5] => ../files/flv/5 [6] => ../files/flv/6 [7] => ../files/flv/7 [8] => ../files/flv/8 [9] => ../files/flv/9 )我需要这样分类:
Array ( [0] => ../files/flv/1 [1] => ../files/flv/2 [2] => ../files/flv/3 [3] => ../files/flv/4 [4] => ../files/flv/5 [5] => ../files/flv/6 [6] => ../files/flv/7 [7] => ../files/flv/8 [8] => ../files/flv/9 [9] => ../files/flv/10 )我试着使用sort($array,SORT_NUMERIC);,但是由于这个前缀../files/flv/,没有运气。
我只知道这个解决方案:$array2 = array_map('basename', $array);和sort($array2,SORT_NUMERIC);
还有其他不那么复杂的解决办法吗?
发布于 2014-09-14 18:58:55
使用SORT_NATURAL而不是SORT_NUMERIC (需要PHP5.4.0或最新版本):
sort($array, SORT_NATURAL);编辑:--我使用这段代码来测试它:
$array = array(
'../files/flv/1',
'../files/flv/10',
'../files/flv/2'
);
sort($array, SORT_NATURAL);
print_r($array);它的产出如下:
Array
(
[0] => ../files/flv/1
[1] => ../files/flv/2
[2] => ../files/flv/10
)编辑2:或者您可以使用natsort()函数,它也适用于旧版本:
natsort($array);发布于 2014-09-14 19:00:16
如果“./files/flv/”路径总是相同的,您可以尝试对所有元素使用str_replace函数,然后使用排序数字进行排序,然后将相同的路径添加回所有元素。
因此,三个步骤是:
为了使它更完美,您可以通过创建自己的函数并将path作为参数来实现这一点。
发布于 2014-09-14 18:59:09
你试过没有SORT_NUMERIC标志吗?
https://stackoverflow.com/questions/25836870
复制相似问题