使用ksort进行升序排序


sort ascending with ksort

我有以下数组:

$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是最后一个。也许与英国排序?

PHP 版本: 5.3.3

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

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

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

一个工作的例子。

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

那将是这样的:

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

举个例子。