2016-04-12 12 views
0

最後の質問はうまく受け取りませんでしたので、私はもっと読んだことがあり、行と列の数に対してユーザー入力を受け付ける簡単なPHPプログラムを考え出しました。ネストされたwhileループを使用してテーブルが生成され、 'For'ループがこれに適していることを理解しています。勉強しようとすると良くなるので、私もこのことを理解したい。私は1つの列だけと列を取得しています。また、例のように見える行と列を生成する反復処理も必要です。 forループの種類は、最終的に把握するのがずっと簡単でした。ネストされたwhileループで目的の出力が生成されないのはなぜですか?

W,row1,col1; W,row1,col2; W,row1,col3 
W,row2,col1; W,row2,col2; W,row2,col3 etc... 

PHPコード:

if(isset($_GET['rows'])) { 

//Create counters 

    $count = 1; 
    $rows = $_REQUEST['rows']; 
    $cols = $_REQUEST['cols']; 

    //for loop to create table 

    for($i=1;$i<=$rows;$i++){ 
     echo '<tr>'; 
     for($j=1;$j<=$cols;$j++){ 
      echo '<td>W,'.'row'.$i.',col'.$j.';</td>';   
     } 
     echo '</tr>'; 
    } 
} 
+0

あなたが行ったループの繰り返し回数を記録することはありません。コードが何をしているのかを考え、言葉でそれを聞きなさい。 '' '$ rows'''は常に同じ数ですので、ループの各繰り返しで' '' '$ rows''(と' '' $ cols'')を減分する必要があります。最終的には> = 1にはなりません。 '' $ count ++ '' 'にセミコロンもありません。私はこれが役立つことを願っています –

+0

ありがとう、私は($行!= 0)に評価条件を変更し、同じcolsに行くつもりです。そして、もちろん行のためのカウンターを残して....ありがとう! – allendks45

答えて

1

あなたはwhile条件でテストしている変数を変更することはありませんしているので:

<?php 

if(isset($_GET['rows'])) { 



$r = 1; 
$c = 1; 
$rows = 5; 
$cols = 6; 
while ($r <= $rows) { 
     echo '<tr>'; 
     while($c <= $cols) { 
      echo '<td>W, '.'row' .$r.',col'.$c.';</td>'; 
      $c++; 
     } 
     echo '</tr>'; 
     $r++; 
    } 

    ?> 
-1

あなたはこのようにそれを行うことができますループは無限です。毎回変数を減らす必要があります。

そして、内部ループの前に$colsを再初期化する必要があります。それ以外の場合は、外側ループの最初の反復後に終了条件が既に満たされます。

$count = 1; 
$rows = $_REQUEST['rows']; 

//while loop to create table 

while ($rows-- >= 1) { 
    echo '<tr>'; 
    $cols = $_REQUEST['cols']; 
    while ($cols-- >= 1) { 
     echo '<td>W,row1,col1;</td>'; 
     $count++ 
    } 
    echo '</tr>'; 
} 
+0

これは役に立つ答えではありません。コードを正しく書式設定し、何をしているのか説明します。 – miken32

+0

上記のforループを使って出力を正しくフォーマットしています。 whileループを変更します。これを3時間近く見つめ、セミコロンを逃して、$行!= 0を使用していたはずです。私はここのコメントでそれを理解すると確信しています。別の目をするのは痛いことではありません。 – allendks45

関連する問題