2016-02-15 3 views
2

У меня есть следующий массив:сортировать по возрастанию с 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_1, option_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

ответ

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.

+0

Спасибо. Это, похоже, не работает с PHP 5.3. Есть ли другое решение? – Vince

+0

@Vince Да, это php 5.4+. Поддержка 5.3 завершилась в августе 2014 года, поэтому вам следует серьезно подумать о переходе на более новую версию. – jeroen

+0

Да, это было бы лучше. Но на данный момент я должен оставаться на 5.3. Сервер недоступен извне. – Vince

Смежные вопросы