我被困在这里。我有if else条件的循环,我需要在一次迭代中输出,以根据前一次迭代的输出进行更改。这是一个例子:
$mr1 = 2;
$mc1 = 4;
$mr2 = 2;
$mc2 = 3;
$r = 5; $c = 5;
echo "<table>";
for ($i=1; $i <= $r; $i++) {
echo "<tr>";
for ($n=1; $n <= $c; $n++) {
if ((($i == $mr1) AND ($n == $mc1)) || (($i == $mr2) AND ($n == $mc2))){
echo "<td> * </td>";
} else
echo "<td> 1 </td>";
}
echo "</tr><br>";
}
echo "</table><br><hr/><br>";
因此,在此循环中,如果满足条件,则输出将为*
,否则将为数字1
。我不知道如何实现的是在前一次迭代输出中2
使代码输出*
。
我希望你明白我想说什么?
感谢名单
答案 0 :(得分:2)
使用另一个变量:
$last_star = false;
for ($n=1; $n <= $c; $n++) {
if ((($i == $mr1) AND ($n == $mc1)) || (($i == $mr2) AND ($n == $mc2))){
echo "<td> * </td>";
$last_star = true;
} elseif ($last_star) {
echo "<td> 2 </td>";
$last_star = false;
} else {
echo "<td> 1 </td>";
$last_star = false;
}
}
顺便说一下,习惯于写if
和else
条款而不用括号围绕它们。如果您忘记添加多个语句时需要的大括号,那么当您向其添加代码时(如上所述),它可能会导致问题。
答案 1 :(得分:0)
我只想添加@ Barmar的回答,这是许多语言中的常见模式,并且可以通过循环范围之外的变量轻松解决:
var outsideVariable = false; //variable here is public and would work sometimes.
function()
{
// Variable could also be here to be outside only the for loop
for ($n = 0; n < x; n++)
{
if (condition a)
{
//Do stuff
outsideVariable = false;
}
elseif (condition a & outsideVariable)
{
//do other stuff
outsideVariable = false;
}
else
{
//do other stuff
outsideVariable = true;
}
}
}
我知道这不是特定于你的问题,但是指出范围希望能帮助你和其他人了解巴马尔所展示的内容。