В следующем массиве я хочу изменить порядок клавиш с высокого на низкий (так, например, первые данные за год 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).
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
)
)
изменение
$array = rsort($array);
print_r($array);
в
rsort($array);
print_r($array);
rsort
имеет возвращаемое значение boolean, поэтому просто используйте его так:
rsort($array);
Кроме того, rsort
сортирует значения массива в обратном порядке, а не массивы, проверяет документацию:
http://php.net/manual/en/function.rsort.php
Поэтому в обратном порядке просто используйте krsort
- Сортируйте массив по ключу в обратном порядке:
http://php.net/manual/en/function.krsort.php
Итак, ваш код:
krsort($array);
usort($array, function($item1, $item2){
if ($item1->year > $item2->year ) return true;
else return false;
})
Это если вы хотите заказать год, если вы хотите заказать по клавишам uksort, можно использовать вместо этого