PHP替换为do while

时间:2013-12-01 19:19:56

标签: php for-loop while-loop

我需要使用do while编写以下代码,而不是使用for循环,我该怎么做?

<?php
echo "<table>";
for($i=1;$i<=10;$i++)
{ 
    echo "<tr>";
    for($i2=1;$i2<=10;$i2++)
    { 
        if(($i*$i2)%2==0)
        {
            echo "<td>" . $i*$i2 . "</td>"; 
        }
        else
        {
            echo "<td>" . $i*$i2 . "</td>"; 
        }

    }
    echo "</tr>";
}
echo "</table>";
?> 

2 个答案:

答案 0 :(得分:2)

我觉得你想要它的方式循​​环应该是这样的:

$i = 1; // initiate condition variable
// start the loop
do {
   // some code
   $i++; // increment condition variable
}
while ($i <= 10); // the loop condition

所以带有do-while循环的代码应该是这样的:

echo "<table>";

$i = 1; // initiate $i to 1
// start outer loop
do { 
    $i2 = 1; // initiate $i2 to 1

    echo "<tr>";
    // start inner loop
    do {
        if(($i*$i2)%2==0)
        {
            echo "<td>" . $i*$i2 . "</td>"; 
        }
        else
        {
            echo "<td>" . $i*$i2 . "</td>"; 
        }
        $i2++; // increment $i2
    }
    while ($i2 <= 10); // inner loop condition

    echo "</tr>";
    $i++; // increment $i
}
while ($i <= 10); // outer loop condition

echo "</table>";

资源:http://www.php.net/manual/en/control-structures.do.while.php

答案 1 :(得分:1)

好吧,我不知道你会怎么做,但我会这样做......

  <?php
  echo "<table>";
  $a = 1;
  do
  {
      echo "<tr>";
      $b=1;
      do
      {
          if((($a * $b) % 2) == 0)
          {
              echo "<td>" .($a * $b). "</td>";
          }
          else
          {
              echo "<td>" . ($a * $b) . "</td>";
          }
          $b++;
      } while($b<=10);
      echo "</tr>";
      $a++;
  } while($a<=10);
  echo "</table>";
  ?>

根据您的要求,用for/next替换每个do/while

请注意,我还可以自由地将$i$i2替换为$a$b,因为这样更具可读性。最后但并非最不重要的是,我在这里和那里添加了一些“()”,这将避免潜在的代码问题。

修改

结果如下:

screenshot of output

do / while循环背后的一般逻辑如下:

do { /* something */ } while (/* condition */);