2014-07-05 58 views
0

看了這個問題,但似乎無法做任何事情。我想從最高百分比到最低百分比訂購「pct」。下面是我的代碼...PHP usort排序選舉pk

<? 
$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> 
+0

什麼是你的PHP版本? – mpyw

回答

0

在你usort回調你是返回一個減法的結果,而不是一個比較。你有這樣做:

usort($data, function($a, $b) { 
    return $a->pct < $b-pct; // or any other comparing like equals, greater, etc. 
});