PHP数组中的键未按数字排序

use*_*398 5 php

我有一个PHP数组,其中的键包含年份和周数,如下所示:

year-week
Run Code Online (Sandbox Code Playgroud)

使用内置的ksort函数,它将返回它们:

ksort($array);

2011-21
2011-3
2011-44
2011-45
Run Code Online (Sandbox Code Playgroud)

是否有可能按照数字方式对它们进行排序:

2011-3
2011-21
2011-44
2011-45
Run Code Online (Sandbox Code Playgroud)

rai*_*ace 10

如果您使用PHP> = 5.4使用 ksort($array, SORT_NATURAL);

  • 这应该是公认的答案. (3认同)

Roc*_*mat 8

使用uksort该键排序,并在回调使用strnatcmp.

uksort($array, function($a,$b){
    return strnatcmp($a,$b);
});
Run Code Online (Sandbox Code Playgroud)

  • 这很棒.这允许在PHP 5.3中进行自然排序.直到5.4才支持使用自然排序的`ksort`,所以这是一个很好的解决方法. (2认同)

Jos*_*ser 1

如果您使用 2 位数的周来格式化它们,您将得到您想要的结果。更像是 2011 年 3 月。请参见 sprint_f()。