如何在循环中创建循环...? PHP - MySQLi

时间:2014-05-02 11:57:33

标签: php mysql for-loop while-loop

我有将数字存储到行中的数据表。现在我想和他们一起创建桌子。我想要列出X行和Y列。我知道我应该使用while foreach循环,但我不知道如何...... :(

$result = $db->query(
        "SELECT `x`,`y`,`noe` FROM `table` "
      . "WHERE (`x` >= 0 and `x` < 4) and (`y` >= 0 and `y` < 4) "
      . "ORDER BY `x`,`y` ASC") or die($db->error);

if($result) {
    echo "<pre>",$result->num_rows,"</pre>";
    echo "<pre>",  print_r($row = $result->fetch_object()),"</pre>";
?>
<table>

<?php
    while($row = $result->fetch_all()){
        //echo "X: ", $row->x, " ,Y: ", $row->y," ,Type of item: ", $row->noe,"<br>";
        echo '<tr><td>',$row->x,'-',$row->y,'</td></tr>';
    }
}
?>
</table>    

1 个答案:

答案 0 :(得分:1)

这是一个有趣的问题。如果你有一个二维数组,那么你就可以首先遍历x,然后遍历每个y以获得x的给定值。然而,尽管您的数据描述的是二维结构,但它的结果却很平坦。每次您注意到结果中的x与上次迭代中的<tr>..</tr>不同时,我会遍历行,跟踪最后x并创建新的$lastx = -1; // or some value you know you'll never use while ($row = $result->fetch_all()) { $x = $row['x']; if ($x != $lastx) { echo '<tr>'; } echo '<td>...</td>' if ($x != $lastx) { echo '</tr>'; $lastx = $x; } } (即行已更改)。

这样的东西
{{1}}