用ksort升序排序

时间:2016-02-15 10:58:35

标签: php arrays sorting

我有以下数组:

$optionen_kosten = array(
    "option_5" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_3" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_1" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_6" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_8" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_10" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_2" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_4" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_7" => array(
        'monthly' => 2,
        'setup' => 5
    ),
    "option_9" => array(
        'monthly' => 2,
        'setup' => 5
    )
);

现在,我想对该数组升序的键进行排序(option_1option_2 ...)

我尝试使用ksort,但效果并不理想:

option_1
option_10
option_2
option_3
option_4
option_5
option_6
option_7
option_8
option_9

我希望option_10成为最后一个。也许用uksort

PHP版本:5.3.3

1 个答案:

答案 0 :(得分:2)

你想要“自然排序”,你可以直接将其添加到ksort(在php 5.4 +中):

ksort($optionen_kosten, SORT_NATURAL);
var_dump($optionen_kosten);

有关可选参数值的详细信息,请参阅sort()上的手册。

A working example

对于旧版本的php,您可以使用uksort()

这就像是:

uksort($optionen_kosten, function($a, $b) {
    return strnatcmp($a, $b);
});
var_dump($optionen_kosten);

An example