首页 > 解决方案 > 使用PHP显示来自mysql查询的奇数和偶数行数据

问题描述

我使用 mysql 查询从两队之间的比赛中获取以下数据:

| name  |score|
---------------
|John   |  7  |
|Danny  |  0  |
|John   |  7  |
|Peter  |  5  |

然后我使用一些 PHP 代码(见下文)来显示数据,如下所示:

|Player 1|Score 1|Player 2|Score 2|
-----------------------------------
|John    |   7   |Danny   |   0   |
|John    |   7   |Peter   |   5   |

但我想要:

|Player 1|  Score  |Player 2|
-----------------------------
|John    |  7 - 0  |Danny   |
|John    |  7 - 5  |Peter   |

我用来与 PHP 并排显示来自 sql 的两行的代码(从这里得到启发)是:

// output data of each row
$i = 0;
while($row = $result->fetch_assoc()){
// Odd row opens
if (++$i % 2 != 0) echo "<tr>";
echo "<td>".$row['name']."</td>";
echo "<td>".$row['score']."</td>";

// Even row closes
if ($i % 2 == 0) echo "</tr>";
}

我现在挣扎了很多天,但似乎找不到正确的方法。如果它可能有帮助,我可以提供实际的 sql 查询和完整的表结构作为图像。

非常感谢任何帮助。谢谢!

标签: phpmysql

解决方案


您可以先将这些数据拆分为 2 个单独的数组。

// output data of each row
$list1 = [];
$list2 = [];

while($row = $result->fetch_assoc()){
    array_push($list1, [
        'name' => $row['name'],
        'score' => $row['score']
    ]);

    // Get next row
    $row = $result->fetch_assoc();

    array_push($list2, [
        'name' => $row['name'],
        'score' => $row['score']
    ]);
}

然后您可以正确打印它们:

foreach($list1 as $i => $player) {
    echo "<td>".$player['name']."</td>";
    echo "<td>".$player['score']." - ".$list2[$i]['score']."</td>";
    echo "<td>".$list2[$i]['name']."</td>";
}

推荐阅读