PHP usort对选举PCT进行排序

PHP usort对选举PCT进行排序,php,usort,Php,Usort,在这个问题上仔细研究了几个问题,但似乎没能让我们做任何事情。我想从最高百分比到最低百分比订购“pct”。下面是我的代码 <? $ch = curl_init(); $timeout = 5; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,

在这个问题上仔细研究了几个问题,但似乎没能让我们做任何事情。我想从最高百分比到最低百分比订购“pct”。下面是我的代码

    <?
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = json_decode(curl_exec($ch));
usort($data, function ($a, $b) {
    return $a->pct - $b->pct;
});
curl_close($ch);
foreach ($data->races as $slug => $race) {
    $p = $race->pctCount;
    $pRetty = prettyNum($p);
    $multiball = ($race->pos > 1) ? '<a class="multiRace"><em>Top '.$race->pos.' advance</em></a>' : false;
    echo '<div class="race"><h3>'.$race->race.'</h3>'.$multiball.'<table class="'.$slug.' race">';
    if ($race->pctCount != 0) { echo '<div class="pace" data-pct="'.round($p,3).'"><a class="progbar"></a>'.$pRetty.' counted</div>'; }
    foreach ($race->candidates as $cand) {
            echo '<tr class="cand '.$cand->party.'"><td class="bar"><a class="statsBar"></a></td><td>'.$cand->name.' ('.$cand->party.')'.'</td><td class="results">'.prettyNum($cand->pct).'</td></tr>';
    }
    echo '</table></div>';
}

function prettyNum($num) {
    return (round($num,3)*100).'%';
}
?>
</body>
</html>

usort
回调中,您返回的是减法结果,而不是比较结果。您必须这样做:

usort($data, function($a, $b) {
    return $a->pct < $b-pct;    // or any other comparing like equals, greater, etc.
});
usort($data,function($a,$b){
返回$a->pct<$b-pct;//或任何其他比较,如等于、大于等。
});

您的PHP版本是什么?