在php中排序列表

时间:2016-04-01 12:46:51

标签: php arrays sorting

我希望从最高“leaguePoints”的人订购我的列表到php最简单的方式,我的代码转到暴乱服务器url使用我搜索的人的api和用户名从url获取数据。 提前谢谢。

这样打印出来:

TRC Broxah | 713LP | 229Wins | 145Losses

v Cabo | 440LP | 131Wins | 87Losses

Melty Wakz | 459LP | 65Wins | 33Losses

MLG Glebo HLTV | 450LP | 182Wins | 150Losses

Huikee Masa | 444LP | 287Wins | 250Losses

AtraX Belze | 648LP | 261Wins | 204Losses

Every1Wants2Rule | 557LP | 68Wins | 33Losses

EL Steeve | 742LP | 109Wins | 69Losses

łÍÎÌÍIIIIIIIlla| 1063LP | 255Wins | 112Losses

0C0 | 756LP | 182Wins | 116Losses

UOL Vizicsacsi | 474LP | 106Wins | 88Losses

Melty Tioo | 492LP | 135Wins | 106Losses

SLEEPlNG | 418LP | 211Wins | 192Losses

Trashyyy | 480LP | 97Wins | 67Losses

<?php
$apiKey = 'RIOT API';
$summonerName = 'raget deathdex';
$new = rawurlencode($summonerName);

$news = str_replace(' ', '', $summonerName);
$str = strtolower($news);



// get the basic summoner info
$result = file_get_contents('https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/' . $new . '?api_key=' . $apiKey);
$summoner = json_decode($result)->$str;
$id = $summoner->id;
// var_dump($summoner);
?>  








<?php
$challengerleaguerankingList = file_get_contents('https://euw.api.pvp.net/api/lol/euw/v2.5/league/challenger?type=RANKED_SOLO_5x5&api_key=e9044828-20e3-46cc-9eb5-545949299803');

$getchallengerleaguerankingList = json_decode($challengerleaguerankingList);

?>

这是我需要按最高到最低联赛点排序的代码部分:

<?php foreach($getchallengerleaguerankingList->entries as $statSummaryz){


print '<p><b>' .$statSummaryz->playerOrTeamName. '</b> | <font color="blue">' .$statSummaryz->leaguePoints. '</font>LP | <font color="green">' .$statSummaryz->wins. '</font>Wins | <font color="red">' .$statSummaryz->losses.'Losses </font></p>';

}array_multisort($statSummaryz->leaguePoints, SORT_DESC, $statSummaryz);
?>    

2 个答案:

答案 0 :(得分:0)

您可以激发您对此代码的启发(我已经转到documentation of uasort并且很少为您改变)。 Uasort可以使用函数回调对数组进行排序。

function cmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ((int)$a < (int)$b) ? -1 : 1;
}

$array = array('2LP','1LP');
var_dump($array);



Show :
     : Array
(
    [0] => 2LP
    [1] => 1LP
)

uasort($array, 'cmp');
var_dump($array);

Show :
    : Array
    (
        [1] => 1LP
        [0] => 2LP
    )

请注意(int)强制转换,以便在&#34; LP&#34;之前保留数字。所以1LP被解释为1。

您可以使用它来按照LP的数量对数组进行排序(在您的情况下,它是一个对象)

祝你好运,问你是否能做到这一点

答案 1 :(得分:0)

我建议您使用usort功能。

示例:

$entries = $getchallengerleaguerankingList->entries;
usort($entries, function($a,$b){
    return $a->leaguePoints-$b->leaguePoints;
});
foreach($entries as $statSummaryz){
    print '<p><b>' .$statSummaryz->playerOrTeamName. '</b> | <font color="blue">' .$statSummaryz->leaguePoints. '</font>LP | <font color="green">' .$statSummaryz->wins. '</font>Wins | <font color="red">' .$statSummaryz->losses.'Losses </font></p>';
}

这应该有用。