2016-04-12 4 views
0

Letzte Frage wurde nicht gut erhalten, so habe ich mehr lesen und kam mit einem einfachen PHP-Programm, das Benutzereingaben für die Anzahl der Zeilen und Spalten akzeptiert. Eine Tabelle wird mit Hilfe der geschachtelten while-Schleife generiert, und ich verstehe, dass eine 'For'-Schleife dafür besser geeignet ist und sie mit einem funktionierten. Versuche zu lernen und besser zu werden, also möchte ich auch dieses herausfinden. Ich bekomme nur eine Zeile und keine Spalten. Ich möchte auch, dass die Iteration Zeilen und Spalten erzeugt, die wie im Beispiel aussehen. Irgendwie frustriert war die for-Schleife viel einfacher endlich herauszufinden.Warum erzeugt meine geschachtelte while-Schleife nicht die gewünschte Ausgabe?

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

PHP-Code:

<?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++; 
    } 

    ?> 
+0

Sie haben nichts zu verfolgen, wie viele Schleifen Iterationen Sie getan haben. Denken Sie darüber nach, was der Code macht und hören Sie ihn in Worten aus. '' '$ rows''' ist immer die gleiche Zahl, Sie müssen etwas haben, das' '' $ rows''' (und '' '$ cols''' natürlich) bei jeder Iteration der Schleife dekrementiert irgendwann wird es nicht mehr> = 1 sein. Ihnen fehlt auch ein Semikolon auf '' $ count ++ '' '. Ich hoffe das hilft. –

+0

danke, ich werde die Auswertungsbedingung ändern in ($ rows! = 0) und cols das gleiche. Und natürlich einen Zähler für die Reihen halten .... Danke! – allendks45

Antwort

1

Sie nie die Variablen ändern, die Sie in den while Bedingungen zu testen sind, so dass die Schleifen sind unendlich. Sie müssen die Variablen jedes Mal dekrementieren.

Und Sie müssen $cols vor jeder inneren Schleife neu initialisieren. Andernfalls ist die Endbedingung bereits nach der ersten Iteration der äußeren Schleife erfüllt.

$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>'; 
} 
-1

Sie es wie folgt tun:

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

Dies ist keine brauchbare Antwort. Formatiere deinen Code richtig und erkläre, was du machst. – miken32

+0

Ich habe es funktioniert mit der for-Schleife oben mit dem Ausgang formatiert korrekt. Wird Änderungen an der While-Schleife vornehmen. Ich habe fast 3 Stunden lang darauf gestarrt und den Semikolon verpasst und hätte die ($ rows! = 0) verwenden sollen. Ich bin sicher, mit den Kommentaren hier werde ich es herausfinden. Es tut nie weh, andere Augen darauf zu bekommen. – allendks45

Verwandte Themen