2015-12-23 2 views
0

У меня есть следующий массив:Как отсортировать массив в порядке возрастания от ключа в PHP?

$arr = array('XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 

Теперь, используя функцию, я генерировать следующий массив на основе предыдущего. При выполнении print_r($new_arr) и вторя его в pre тегов, это выход:

Array 
(
    [4] => l 
    [3] => m 
    [2] => s 
    [5] => xl 
    [1] => xs 
) 

Однако я пытаюсь добиться этого:

Array 
(
    [1] => xs 
    [2] => s 
    [3] => m 
    [4] => l 
    [5] => xl 
) 

Теперь, я сделал некоторые поиск по SO и нашел о функции ksort. Дальнейшее чтение в Документах PHP показывает, что это тот, который будет использоваться, но когда я использую ksort следующим образом и эхо-вывод, я получаю только значение 1, вместо массива значений, как я ожидал получить в предыдущем пункт выше:

$sorted_arr = ksort($new_arr); 

на вторя $sorted_arr в pre тегов, это выход (это просто номер один):

1 

Я не совсем уверен, что здесь не так. Заранее спасибо.

+0

'ksort' не возвращает отсортированный массив, он работает над ссылкой массива. Вы найдете массив, в котором вы проходили, должны быть отсортированы. –

+0

ksort сортирует массив и возвращает true/false. Вам не нужно ничего назначать. http://php.net/manual/en/function.ksort.php – aynber

ответ

3

ksort возвращает логическое значение, а не отсортированный массив. Выведите вместо этого переменную $new_arr.

+0

Ага! Понимаю. Мне не следовало назначать 'ksort()'. Спасибо – nTuply

+0

@nTuply Это случается с остальными из нас. Просто ознакомьтесь с документацией и обратите внимание на возвращаемые значения, и все будет в порядке. Удачи и счастливого развития! –

0

Если вы просмотрите документацию here. Вы узнаете ksort возвращает TRUE по успеху или FALSE при ошибке. Распечатайте $new_arr вместо этого, он был передан как ссылка на ksort().

0

Что вы ищете, это функция krsort.

Обратите внимание, что функция сортирует входной массив на месте, а не возвращает отсортированную версию. Возвращаемое значение - это bool и просто указывает на успех или неудачу.

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