For Schleife mit Variablendeklaration in der Bedingung und ausserhalb der Bedingung

mäks

Mitglied
Hallo,

ich arbeite mich gerade wieder einmal durch die Basics von PHP durch und bin da auf ein Beispiel gestoßen:

Das Kleine 1x1 in einer For Schleife:

Ziel des ganzen soll sein, dass das kleine 1x1 in einer Tabelle ausgegeben wird.

Hier meine Versuche:

Version 1:

Was ich hier nicht verstehe, wieso wird hier nur 1 Zeile und nicht die ganze Tabelle ausgegeben, er scheint in die innere Schleife gar nicht mehr hineinzuspringen sobald i=2 ist!

Ich kann mir leider nicht erklären was hier der Unterschied ist zwischen, wenn die Varbiablendeklaration ausserhalb der For Bedingung passiert und wenn die Variablendeklaration in der Schleifenbedingung passiert for ($i=1; $i < 11; $i++) wie in Version 2.

PHP:
<html>
    <head><title> Übung </title></head>
    
    <body>
        
        <?php
        
            echo "Kleine 1 x 1 mit der For Schleife";
            echo" <br> ";
            
            $i=1;
            $j=1;
            $erg=0;
            
            echo "<table border='1'>";
            
            for ($i; $i < 11; $i++)
            {
                echo "aussen: [\$i]: ".$i." <br>";
                echo "<tr>";
                
                for ($j; $j < 11; $j++)
                {
                    $erg= $i*$j;
                    echo "<td>".$erg."</td>";
                    
                    echo "innen: [\$i]".$i." <br>";
                    echo "innen: [\$j]".$j." <br>";
                }

            }
            
            echo "</table>";
        ?>
        
    </body>
</html>

Version 2:

PHP:
<html>
    <head><title> Übung </title></head>
    
    <body>
        
        <?php
        
            echo "Kleine 1 x 1 mit der For Schleife";
            echo" <br> ";
            
            $erg=0;
            
            echo "<table border='1'>";
            
            for ($i=1; $i < 11; $i++)
            {
                echo "aussen: [\$i]: ".$i." <br>";
                echo "<tr>";
                
                for ($j=1; $j < 11; $j++)
                {
                    $erg= $i*$j;
                    echo "<td>".$erg."</td>";
                    
                    echo "innen: [\$i]".$i." <br>";
                    echo "innen: [\$j]".$j." <br>";
                }

            }
            
            echo "</table>";
        ?>
        
    </body>
</html>

Könnt ihr mir da bitte weiterhelfen?


danke und lg

Maks
 
Mal ein kleiner Tipp, mach nich so viele echos und trenn die Werte mit einem Komma wenn du den Verkünpfungsoperator nicht brauchst.

PHP:
<html> 
    <head><title> Übung </title></head> 
     
    <body> 
         <p>Kleine 1 x 1 mit der For Schleife</p>
             <table border="1">
                 <tbody>
                 <?php for ($i=1;$i<11;++$i):?>
                 <tr>
                 <?php for($j=1;$j<11;++$j) echo '<td>', $i*$j, '</td>'; ?>
                 </tr>
                 <?php endfor; ?>
             </tbody>
          </table>
    </body> 
</html>
 
Hi,

danke für den Tipp!

doch leider ist mir noch immer nicht klar, wieso die Version 1 nicht funkioniert und mir nur eine Zeile mit 1-10 ausgibt. Jemand eine Idee?
 
Hi,


Ich denke das ichs verstanden habe:

Wenn ich die Variablendeklaration von $i ausserhalb der For Schleife schon mache so wird einmalig $i bis 10 hochgezählt (Zeilen).
Wenn ich die Variablendeklaration von $j ausserhalb der inneren For Schleife schon mache so wird nach jedem $i++, der Wert von $j wieder auf 1 gesetzt, so wird dann jedes mal eine neue Zeile mit $j==1 erstellt.

Klarerweise wenn ich $j schon ausserhalb der äußeren For Schleife deklariere, dann wäre die while-abbruch Bedingung ja schon nach dem ersten Lauf erfüllt, da $j dann schon <= 10 ist und somit wird die Schleife verlassen.


PHP:
echo "Kleine 1 x 1 mit der For Schleife";
            echo" <br> ";
            
            $i=1;
            $erg=0;
            
            echo "<table border='1'>";
            
            for ($i; $i < 11; $i++)
            {
                echo "<tr>";
                
                $j=1;
                
                for ($j; $j < 11; $j++)
                {
                    $erg= $i*$j;
                    echo "<td>".$erg."</td>";
                    
                    echo "innen: [\$i]".$i." <br>";
                    echo "innen: [\$j]".$j." <br>";
                }
                echo "</tr>";
            }
            
            echo "</table>";

PS:

Zu den Echoes:

hab das in meiner Euphorie nicht mehr berücksichtigen können, ich hoffe ihr nehmt mir das nicht übel :)


lg

Maks
 

Neue Beiträge

Zurück