Сортировать массив от высокого к низкому

0

В следующем массиве я хочу изменить порядок клавиш с высокого на низкий (так, например, первые данные за год 2014).

print_r($array); 

Вывод:

Array
(
    [0] => Array
        (
            [year] => 2013
            [name] => xx
        )

    [1] => Array
        (
            [year] => 2014
            [name] => xx
        )
)

Я попытался использовать rsort, но он возвращает только "1".

$array = rsort($array);
print_r($array);    //1
var_dump($array);   //bool(true).
Теги:
arrays
sorting

4 ответа

5
Лучший ответ

rsort() будет работать только на одномерных массивах. У вас есть двумерный массив, поэтому вам нужно будет использовать другую функцию, такую как usort(), которая позволяет использовать пользовательскую функцию сравнения для сортировки:

usort($data, function ($a, $b) {
    return $a['year'] < $b['year'];
});

Вывод:

Array
(
    [0] => Array
        (
            [year] => 2014
            [name] => xx
        )

    [1] => Array
        (
            [year] => 2013
            [name] => xx
        )

)

Рабочая демонстрация

  • 0
    Downvoter, хочешь объяснить? Ваше объяснение может помочь мне улучшить ответ :)
  • 0
    Спасибо за ваш ответ, это было очень полезно. Я проголосовал.
Показать ещё 2 комментария
1

изменение

$array = rsort($array);
print_r($array);  

в

rsort($array);
print_r($array);  
  • 0
    любой человек, который отрицает голосование, может поспорить со мной за этот ответ?
  • 0
    Counter-upvoted.
Показать ещё 5 комментариев
1

rsort имеет возвращаемое значение boolean, поэтому просто используйте его так:

rsort($array);

Кроме того, rsort сортирует значения массива в обратном порядке, а не массивы, проверяет документацию:

http://php.net/manual/en/function.rsort.php

Поэтому в обратном порядке просто используйте krsort - Сортируйте массив по ключу в обратном порядке:

http://php.net/manual/en/function.krsort.php

Итак, ваш код:

krsort($array);
  • 0
    Кто даунвот ??? Объясните! Прочтите еще раз ОП вопрос: «Я хочу изменить порядок клавиш с высокого на низкий» ...
  • 1
    некоторые люди, которые даже не знают PHP, идут на понижение
0
usort($array, function($item1, $item2){
   if ($item1->year > $item2->year ) return true;
   else return false;
})

Это если вы хотите заказать год, если вы хотите заказать по клавишам uksort, можно использовать вместо этого

Ещё вопросы

Сообщество Overcoder
Наверх
Меню