Php JSON массив сортировки

JSON URL

Я хочу сортировать массив чемпионов. Я хочу, чтобы отсортировать его по «чемпионов -> 0 -> статистика -> totalSessionsPlayed», но я не могу. Как я могу короткий массив?

$url = 'https://tr.api.pvp.net/api/lol/tr/v1.3/stats/by-summoner/3800684/ranked?season=SEASON2016&api_key=RGAPI-2F65B634-F9C5-4DA7-A5E3-1D955D5D1E3B';
$content = file_get_contents($url);
$arr = json_decode($content);
$sorted = sort(array_column($arr, 'totalSessionsPlayed'));

Я нашел этот код, но он не работает.

0

Решение

использование usort с пользовательской функцией сравнения:

$champions = $arr->champions;
// usort alters the input array, no need to assign
usort($champions , function($a, $b) {
// Will sort in descending order, for ascending, switch sides
return $b->stats->totalSessionsPlayed - $a->stats->totalSessionsPlayed;
});

По сути, вы должны отсортировать массив уровней чемпионов первого уровня и внутренне сравнить более низкие значения.

Ваш код не работает, потому что нет totalSessionsPlayed ключ в $arr массив напрямую.

1

Другие решения

Я надеюсь это тебе поможет.

Здесь я использую вложенный цикл foreach для первого объекта, а затем второй для второго объекта.
Использование array_filter помогает удалить пустую строку / элемент. так как он возвращает false, когда присутствует пустой элемент.
Функция SORT Возвращает TRUE в случае успеха или FALSE в случае неудачи.
Вот почему мы использовали последний цикл для отображения отсортированного результата.

<?php
$url = 'https://tr.api.pvp.net/api/lol/tr/v1.3/stats/by-summoner/3800684/ranked?season=SEASON2016&api_key=RGAPI-2F65B634-F9C5-4DA7-A5E3-1D955D5D1E3B';
$content = file_get_contents($url);
$arr = json_decode($content);
$champions = ($arr->champions);
foreach($champions as $champion){
$champion_totalSessionsPlayed = $champion;

foreach($champion_totalSessionsPlayed as $champions_totalSessionsPlayed){
$totalSessionsPlayed = $champions_totalSessionsPlayed->totalSessionsPlayed;
$totalSessionsPlayed_array[] = $totalSessionsPlayed;
}
}
$totalSessionsPlayed = array_filter($totalSessionsPlayed_array);
sort($totalSessionsPlayed);
$arrlength = count($totalSessionsPlayed);
for($x = 0; $x < $arrlength; $x++) {
echo $totalSessionsPlayed[$x];
echo "<br>";
}
?>
0

По вопросам рекламы [email protected]