我正在尝试在PHP中创建一个简单的乘法网格
它应该是2x2网格的格式:
0 1 2
1 1 2
2 2 4
我的问题是让它从0开始。
到目前为止,这是我的嵌套for循环:
for($i=0;$i<=$_POST['rows'];$i++)
{
echo "<tr>";
for($j=0;$j<=$_POST['columns'];$j++)
{
if($i==0)
{
echo "<td>" . 1*$j . "</td>";
}
else
{
$mult = $i * $j;
echo "<td> $mult </td>";
}
}
echo "</tr>";
}
但它给出了输出:
0 1 2
0 1 2
0 2 4
我需要0的列是合适的。
答案 0 :(得分:1)
你获得0 1 2 3
的第一行的方式是在X轴上的特殊情况。为Y轴做一个类似的特例($j
):
if ($i == 0) {
... 1 * $j ...
}
else if ($j == 0) {
... $i * 1 ...
}
else {
... $i * $j ...
}
答案 1 :(得分:0)
您不仅要$i==0
作为特例,还要$j==0
:
if($i==0)
{
echo "<td>" . 1*$j . "</td>";
}
elseif($j==0)
{
echo "<td>" . $i*1 . "</td>";
}
else
{
$mult = $i * $j;
echo "<td> $mult </td>";
}
答案 2 :(得分:0)
我不明白你构建网格的方式。您只需要一个行指示器和乘法的数字而不是嵌套循环。第二:为什么不从1开始而不是在循环内捕获案例。这将是乘法“网格”的变体
<?php
$rows = $_POST['rows'];
$number = $_POST['columns'];
for( $i=1; $i <= $rows; $i++) {
$mult = $i * $number;
echo "<tr>
<td>" . $i.'*'. $j . "</td>
<td>".$mult."</td>
</tr>";
}
?>
这将是一个简单的网格(x * y)=结果。如果你想要一个完整的乘法表,它将是这样的:
<?php
$rows = $_POST['rows'];
$number = $_POST['columns'];
echo "<tr><th></th>";
for( $j=1; $j <= $number; $j++) {
echo "<th>".$j."</th>";
}
echo "</tr>";
for( $i=1; $i <= $rows; $i++) {
echo "<tr>";
echo "<th>".$i."</th>";
for( $j=1; $j <= $number; $j++) {
$mult = $i * $j;
echo "<td>".$mult."</td>";
}
echo "</tr>";
}
?>