我想按總分從高到低排序足球選秀網站的用戶。我大概需要10個小時才能完成這種工作。我已經在SO上至少有十幾個答案,閱讀並閱讀關於USORT,SORT,ARSORT,UASORT和其他排序選項的PHP手冊。我重複了我的代碼。我是PHP的一名完全新手,現在已經超過了我預定的截止日期3周。我在我的智慧結束b/c我覺得這應該是非常簡單的東西,我要麼1)缺少超簡單的東西或2)過度複雜的解決方案或我的代碼一般。PHP在排序板上排序用戶板
對於我想要實現的視覺想法,所以可以在這裏查看排名頁面:acesoccerpicks [DOT] com/standings.php。它打算根據總分從高到低排列玩家。
這是一個我自己和朋友的個人網站,所以截稿日期並不可怕,但我不想錯過任何更多的匹配缺失排名功能的b/c。
總結:除其他外,我試圖根據計算的點變量($ total_pts)對用戶進行排序,並將用戶顯示爲html表中的排名(從最高到最低)。我也想顯示用戶的排名作爲一個數字(即第一,第二,第三等)。
我的代碼可以在這裏查看:http://jsfiddle.net/Craig78/e6jmLgj7/。 (片段) 的foreach($用戶爲$用戶){// 做的東西在這裏
// Calculate total points score
$total_pts = (($cnt_winner * $ct) + ($cnt_score * $cs)); /* + (($champ IF AFTER FINAL WEEK) + ($pwt * # of PERFECT WEEKS on TEAMS) + ($pws * # of PERFECT WEEKS on SCORES) + ($cl * # of weeks as LEADER after 3 consec weeks) - ($cb * # of weeks in the bottom after 3 consecutive weeks)) */
$ranked_users[$standings_userid] = $total_pts;
}
function compare($a, $b) {
if ($a == $b) {
return 0;
}
return ($b < $a) ? -1 : 1;
}
// sort users
usort($ranked_users, 'compare');
foreach ($ranked_users as $ranked_user) {
print_r($ranked_users);
echo $ranked_user;
// TODO: DETERMINE streaks , if any
echo '<tr>';
echo '<td>' . $user['rank'] . '</td>';
if (isset($_SESSION['user_id'])) {
echo '<td><a href="/team_profile.php?user_id=' . $standings_userid . '?user_team=' . mysqli_real_escape_string($user_team) . '" rel="" title="View ' . $user_team . '\'s profile">' . $user_team . '</a></td>';
}
else {
echo '<td>' . $user_team . '</td>';
}
echo '<td>' . $cnt_winner . '</td>';
echo '<td>' . $cnt_score . '</td>';
echo '<td>(' . $champ_pts . ')</td>';
echo '<td>-</td>';
echo '<td>' . $total_pts . '</td>';
echo '</tr>';
}
我知道有很多事情我可以做,以提高我的代碼並且完全打算回去和重構使用MVC,刪除mysqli的用法,利用功能等等。但作爲新手,我使用PHP,我唯一的目標是讓它「足夠好」,爲一羣緊密團結的朋友推出並使用和享受EPL。所以請將焦點集中在引導我讓用戶排名有效的問題上,我真的需要幫助。
您展示原稿$用戶數組中,我可以做 $用戶=陣列( 陣列( '用戶'=> $ user_ID的, '點'=> $ total_pts) ... ) – user1785997 2014-09-02 14:36:06
是。首先你必須以這種格式創建一個數組。你可以做你所提到的。 – 2014-09-03 05:43:30
請參閱編輯代碼。 – 2014-09-03 05:51:42