MySql dbにこのテーブルがあります:
このクエリを実行した後:
SELECT score, count(*) FROM Coaches group by score ORDER BY score DESC
結果表は次のようになります。
PHP では、結果をフェッチし、配列を反復処理して、各コーチが属するグループを特定し、ランキングでの位置を取得しようとしています。したがって、私はこれを書きました:
$groupsOfScoresQuery = "SELECT score, count(*) FROM Coaches group by score ORDER BY score DESC";
$result = mysqli_query($dbc, $groupsOfScoresQuery);
if ($result) { // query did successfully run
$response['topCoaches'] = array();
if (mysqli_num_rows($result) > 0) {
while ( $rowScore = mysqli_fetch_array($result, MYSQLI_ASSOC) ) {
$currentRanking++;
$score = array(); // temp user array for one group of scores
$numberOfCoaches; // Number of coaches with this particular number of scores
$scoresGroup; // Scores in the particular group
$score["scores"] = $rowScore["score"];
$score["count"] = $rowScore["count(*)"];
$numberOfCoaches = $score["count"];
$scoresGroup = $score["scores"];
$response["scoresGroup"] = $scoresGroup; // HERE IS THE PROBLEM
.
.
.
more processing
} // end WHILE
$response["scoresGroup"]
結果の最後の値が常に含まれるのはなぜですか? この場合、これは123です。これはループの最初の反復であり、$response["scoresGroup"]
最初の要素 (474) を保持すると思いましたが、2 番目の反復では 382 を保持する必要があります。ここで何が間違っていますか?結果を取得するために正しい関数を使用していますか? または、目標を達成するために別のループを使用する必要がありますか? 事前に助けてくれてありがとう。