首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php排序数组升序

问Php排序数组升序
EN

Stack Overflow用户
提问于 2014-09-14 18:55:07
回答 3查看 638关注 0票数 0

我有一个数组:

代码语言:javascript
复制
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 )

我需要这样分类:

代码语言:javascript
复制
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);

还有其他不那么复杂的解决办法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-14 18:58:55

使用SORT_NATURAL而不是SORT_NUMERIC (需要PHP5.4.0或最新版本):

代码语言:javascript
复制
sort($array, SORT_NATURAL);

编辑:--我使用这段代码来测试它:

代码语言:javascript
复制
$array = array(
  '../files/flv/1',
  '../files/flv/10',
  '../files/flv/2'
);

sort($array, SORT_NATURAL);
print_r($array);

它的产出如下:

代码语言:javascript
复制
Array
(
    [0] => ../files/flv/1
    [1] => ../files/flv/2
    [2] => ../files/flv/10
)

编辑2:或者您可以使用natsort()函数,它也适用于旧版本:

代码语言:javascript
复制
natsort($array);
票数 4
EN

Stack Overflow用户

发布于 2014-09-14 19:00:16

如果“./files/flv/”路径总是相同的,您可以尝试对所有元素使用str_replace函数,然后使用排序数字进行排序,然后将相同的路径添加回所有元素。

因此,三个步骤是:

  1. 在数组上使用foreach循环,对ecah元素使用str_replace()函数。
  2. 按照使用排序数字的方式进行排序。
  3. 在数组上使用foreach循环,并将常量路径返回作为前缀。

为了使它更完美,您可以通过创建自己的函数并将path作为参数来实现这一点。

票数 0
EN

Stack Overflow用户

发布于 2014-09-14 18:59:09

你试过没有SORT_NUMERIC标志吗?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25836870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档