我有一个创建脚本的任务,该脚本将仅为指定的数字输出乘法表。要创建常规乘法表,例如10x10,我们会写这样的东西:
echo "<table border=\"1\">";
for ($r =0; $r < $rows; $r++){
echo'<tr>';
for ($c = 0; $c < $cols; $c++)
echo '<td>' .$c*$r.'</td>';
echo '</tr>'; // close tr tag here
}
echo"</table>";
但我应该收到的输出,例如数字&#34; 3&#34;,应该如下所示:
|1 x 1 = 1|1 x 2 = 2|1 x 3 = 3|
| ------- | ------- | ------- |
|2 x 1 = 2|2 x 2 = 4|2 x 3 = 6|
|3 x 1 = 3|3 x 2 = 6|3 x 3 = 9|
任何人都知道如何使用php(while和/或for)循环回应这个?
答案 0 :(得分:2)
听起来您想要输出计算文本以及结果,例如1 x 3 = 3
。你错过了输出。
此外,您需要在for
而不是1
开始0
循环,否则您会得到我认为您不想要的0 x 0 = 0
。您可以在<=
循环的条件下使用<
而不是for
来补偿迭代的丢失,因此您仍然可以获得3次迭代(在此示例中)。
试试这个:
echo '<table border="1">';
for ($r = 1; $r <= $rows; $r++) {
echo '<tr>';
for ($c = 1; $c <= $cols; $c++) {
echo sprintf('<td>%d x %d = %d</td>', $r, $c, $c * $r);
}
echo '</tr>'; // close tr tag here
}
echo '</table>';
您的预期输出似乎也表明第一行应该是标题。这样做对我来说似乎很奇怪,但如果那个 的话,你需要这样做:
$cellType = ($r === 1) ? 'th' : 'td'; // use <th> for the first row, otherwise <td>
echo sprintf('<%s>%d x %d = %d</%s>', $cellType, $r, $c, $c * $r, $cellType);