复杂for循环使用if else

时间:2015-04-17 20:47:13

标签: php if-statement for-loop

我被困在这里。我有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使代码输出*。 我希望你明白我想说什么? 感谢名单

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;
    }
}
顺便说一下,习惯于写ifelse条款而不用括号围绕它们。如果您忘记添加多个语句时需要的大括号,那么当您向其添加代码时(如上所述),它可能会导致问题。

Why is it considered a bad practice to omit curly braces?

答案 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;     
     }
  }
}

我知道这不是特定于你的问题,但是指出范围希望能帮助你和其他人了解巴马尔所展示的内容。