我无法找到解决此问题的方法。我可以用新手if else
函数为每个特定数据解决这个问题,但这很简单。
所以这是我的数组示例:
//I get data from mysqli
while ($recordsnumber = mysqli_fetch_assoc($result1)) {
$records = array(
'id' => $recordsnumber['Id'],
'mapid' => $recordsnumber['ChallengeId'],
'players' => $recordsnumber['PlayerId'],
'time' => $recordsnumber['Score'],
);
$recordstable[] = $records;
}
所以我的数据变得像:
id[1] mapid[2] players[1] time[2310]
id[2] mapid[1] players[4] time[1920]
id[3] mapid[2] players[2] time[2340]
id[4] mapid[3] players[1] time[2180]
id[5] mapid[1] players[2] time[1540]
id[6] mapid[3] players[4] time[2210]
id是表中的主键,可能有10张地图,但其中一些可能还没有播放。可能有50名球员,但其中一些可能还没有比赛。
首先,我想为每个mapid创建一个表,然后我想列出玩过这些地图的玩家。然后我想用最好的时间排序那些球员(越少越好)。所以它应该是这样的:
Map1
Rank-Player-Time
1. Player2 1540
2. Player4 1920
Map2
Rank-Player-Time
1. Player1 2310
2. Player2 2340
我从另一张桌子获取玩家名字和地图名称。这没有问题。我可以用wordwrap显示23:10的时间。没问题。
我认为:
$i=1;
foreach ($recordstable[mapid] as $table){
if ($table = $i) {
//echo $recordstable[] in lots of <tr><td> ^^
}
i++;
}
但它无法获取列出的$recordstable
行。然后我知道我应该使用usort
来排序最好的时间。
所以我被困住了。