2017-09-22 13 views
-1

動作していない場所を特定できないようです。センターでは、++++++のみのラインが必要です。しかし、私はそれが動作するように見えることはできません。 whileループとforループで動作するようにしましたが、whileループでは動作しません。PHP do-loopメソッド

それはこの

  -------+ 
      ------++ 
      -----+++ 
      ----++++ 
      ---+++++ 
      --++++++ 
      -+++++++ 
      ++++++++ 
      -+++++++ 

などしかし、中央の線のようなお奨めの外観は、+文字のフルラインされていないのです。

 <?php 
     echo"<p>Do While loop</p>"; 
     $x1=8; 
     $x2=1; 
     do { 
      $x3=1; 
      do { 
       echo"--"; 
       $x3++; 
      }while($x3<$x1); 
      $x4=1; 
      do { 
       echo"+"; 
       $x4++; 
      }while($x4<=$x2); 
      echo"<br>"; 
      $x1--; 
      $x2++; 
     }while($x1>=0 and $x2<=8); 

     $y1=1; 
     $y2=7; 
     do { 
      $y3=1; 
      do { 
      echo"--"; 
      $y3++; 
      }while($y3<=$y1); 
     $y4=1; 
     do { 
      echo"+"; 
      $y4++; 
     }while($y4<=$y2); 
     echo"<br>"; 
     $y1++; 
     $y2--; 
     }while($y1<=7 and $y2>=1); 

    ?> 
+0

あなたは深くやっている[笑い]。すべての深刻なことに、あなたはあなたの問題(実際には2)に対する答えを持っていると言いますが、めったに使用されない(私の経験では)構造を使用しようとしています。 2)他の開発者が理解するのが最も簡単です。 3)は最も速く実行されます... –

+0

誰もあなたのためにこれをデバッグするつもりはありません。 https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – jdv

答えて

0

これは起こりません。

do { /*Line 4*/ 
    echo"--"; 
    $x3++; 
}while($x3<$x1); 

エコーはブレーク質問の前に評価されます。

これはdo whileとwhileループの基本的な違いです。 whileループでは、条件は何よりも前に評価されます。 do whileループでは、条件の最初のチェックの前にすべてが評価されます。

0

よく私は最後にそれを理解しました。最初の内部doループの後にif($ x1 < = 1){break;}を置くことによって、ループを強制的にスキップしてそこから処理を進めます。