我有这个数组:
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);
还有其他不那么复杂的解决方案吗?
使用
SORT_NATURAL
代替 SORT_NUMERIC
(需要 PHP 5.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
)
natsort()
功能,它也适用于旧版本:
natsort($array);
如果“../files/flv/”路径始终相同,您可以尝试在所有元素上使用 str_replace 函数,然后使用数字排序进行排序,然后将相同的路径添加回所有元素。
所以三个步骤是:
在数组上使用 foreach 循环,并在 ecah 元素上使用 str_replace() 函数。
像使用数字排序一样进行排序。
对数组使用 foreach 循环,并将常量路径放回作为前缀。
为了使其更加完美,您可以通过创建自己的函数并将路径作为参数传递来完成此操作。
您是否尝试过不使用
SORT_NUMERIC
标志?