【发布时间】:2012-04-07 22:05:57
【问题描述】:
好吧,已经很晚了,所以我想我只是筋疲力尽了,但我已经尝试解决这个问题大约一个小时了,但我找不到适合我的解决方案。基本上,代码会查询数据库以找出游戏中有多少人,然后进行一些数学运算来比较人与人之间的分数。之后,它会填充一个数组,其中包含玩家及其分数唯一的 id。现在的问题是,我正在尝试将包含人员列表及其分数的数组与包含玩家将根据他们的等级获得的分数的数组进行比较。我似乎不知道如何将两个数组拉在一起并相应地分配点。代码如下:
$game_id = 4; //will be replaced later on, just for testing
$x = 0;
$y = 0;
$point_array = array();
$entrantsquery = mysql_query("SELECT * FROM game_entrants WHERE game_id='$game_id' AND discipline=1");
while($entrantsarray = mysql_fetch_array($entrantsquery , MYSQL_ASSOC)){
$statquery = mysql_query("SELECT * FROM player_stats WHERE player_id={$entrantsarray['player_id']}");
$statarray = mysql_fetch_array($statquery, MYSQL_ASSOC);
$points = $statarray['stat1'] + $statarray['stat2'] + ($statarray['stat3']*2.3) + $statarray['stat4'] + ($statarray['stat5']*2.7);
$point_array[$x][$y] = $entrantsarray['player_id'];
$y++;
$point_array[$x][$y] = $points;
$x++;
$y--;
}
任何帮助都将不胜感激,因为这已经开始让我头疼了。
编辑:
下面是包含另一个数组的代码:
$total_points = 5000;
$distribution_quantity = 25;
$M = $distribution_quantity-1;
$K = ($distribution_quantity * $M) / 2;
$difference = 15;
$award_points = array();
$equation = ($total_points - ($K * $difference))/$distribution_quantity;
for ($z = $distribution_quantity; $z > 0; $z--) {
$award_points[] = $equation = $equation+$difference;
}
foreach ($award_points as $value) {
echo $value. "<br>";
}
最新更新:
我认为你误会了我。
我有两个数组。第一个数组由用户的唯一 ID 列表和匹配点组成。比赛中得分最多的球员是#1。现在我的第二个数组包含由 25 个数字组成的列表的数据。每个数字代表比赛中的排名。 1 代表最好的球员,25 代表最差的球员。每个等级都有一组不同的积分,这些积分将被添加到玩家的总积分中。第一个数组中的分数仅用于确定玩家在比赛中的整体排名。
例如。
玩家 1 在一场比赛中获得 240 分。 玩家 2 获得 180 分。 玩家 3 得到 210。 以此类推。
这意味着玩家 1 获得了第一名。玩家 3 获得第二名。玩家 2 获得第三名。
现在假设第二个数组如下所示:
1 -> 500 2 -> 300 3 -> 100
玩家 1 获得 500 分。 玩家 2 获得 100 分。 玩家 3 获得 300 分。
我希望这能让它更清楚一点。
【问题讨论】:
-
那么这里的主要问题是什么?什么线?
-
我只需要帮助获取$point_array,它基本上保存了玩家列表和他们的统计数据积累,并将其与$award_points进行比较。有 25 名球员,他们的排名各不相同,1 是最好的,25 是最差的。 $award_points 数组包含 25 个数字的列表。我需要奖励来自 $point_array 的玩家,无论他们获得的排名有多少积分,这些数字都保存在 $award_points