PHP for schleife

som3

Lieutenant
Registriert
Jan. 2010
Beiträge
992
Hallo.
Ich habe mit PHP Lektüre besorgt.
Dort gibt es eine Übungs-Aufgabe die ich nicht gelöst bekommen.

Schreiben Sie ein Programm, in dem mit Hilfe verschiedener
for-Schleifen die nachfolgend angegebenen Zeilen ausgegeben werden. Ein
Tipp: Für die letzte Zahlenreihe wird eine zusätzliche if-Bedingung benötigt.

13 17 21 25 29
2 1.5 1 0.5 0 -0.5 -1
2000 3000 4000 5000 6000
Z5 Z7 Z9 Z11 Z13
a b 1 a b 2 a b 3
c2 c3 c12 c13 c22 c23
13 17 21 33 37 41 45
Bei der letzten zahlen reihe habe ich Problem. und bei der 6. bin ich mir auch nicht sicher ob ich es gut gelöst habe. Muss ich für die 6. Zahlenreihe 3 for schleifen bauen oder geht das einfacher? Und bei der letzten reihe bekomme ich leider nur unendlich viele "21" ausgegeben^^

Gruß Pascal :)

PHP:
<?php

// 1.

for ($i1=13; $i1<=29; $i1=$i1+4)
    {
        echo $i1 . "  ";
    }

echo "<br />";        
//2. ------------------------------------

for ($i2=2; $i2>=-1; $i2=$i2-0.5)
    {
        echo $i2 . "  ";
    }

echo "<br />";        
//3. ------------------------------------

for ($i3=2000; $i3<=6000; $i3=$i3+1000)
    {
        echo $i3 . "  ";
    }

echo "<br />";        
//4. ------------------------------------

for ($i4=5; $i4<=13; $i4=$i4+2)
    {
        echo 'Z' . $i4 . "  ";
    }

echo "<br />";        
//5. ------------------------------------

for ($i5=1; $i5<=3; $i5=$i5+1)
    {
        echo 'a b ' . $i5 . "  ";
    }

echo "<br />";        
//6. ------------------------------------
        
for ($i6=2; $i6<=3; $i6=$i6+1)
    {
        echo "c" . $i6 . "  ";
    }
    
for ($i62=12; $i62<=13; $i62=$i62+1)
    {
        echo "c" . $i62 . "  ";
    }
    
for ($i63=22; $i63<=23; $i63=$i63+1)
    {
        echo "c" . $i63 . "  ";
    }
echo "<br />";        
//7. ------------------------------------


$add = 4;

for ($i7=13; $i7<=45; $i7=$i7+$add)
    {
        if ($i7 = 21)
            $add = 12;
        else
            $add = 4;
            
        echo $i7 . "  ";
    }

?>
 
vergleiche gehen mit einem == operator, ein = ist eine zuweisung
flüchtigkeitsfehler ;)

sprich, vergleichen geht so:
if ($var1 == $var2) ...

zuweisen geht so
$var1 = 1;
$var1 = $var2;


edit:
zudem habe ich gesehen, deklarierst du $add vor der for-schleife
danach wird $add aber nicht mehr benötigt,
deswegen kannst du sie auch in der for-schleife deklarieren

for ($i7=13, $add=4; $i7<=45; $i7=$i7+$add)

so lebt $add nur für die laufzeit der schleife und ist danach nicht mehr verfügbar
 
Zuletzt bearbeitet von einem Moderator:
Super jetzt geht es.

Und bei der 6. Reihe?

c2 c3 c12 c13 c22 c23

Muss ich dort 3 schleifen verwenden?
 
ich würde aus der folge nur zwei erkennen?

for($zehner=0; $zehner<=60; $zehner+=10)
{
for($einer=2; $einer<=3, $einer++)
{
echo "c". ($zehner + $einer);
}
}
 
Zu Reihe 6:

Du kannst fast die selbe Funktion wie bei Reihe 7 verwenden mit der $add variable.
Reihe 6:
+1+9+1+9+1
Reihe7: +4+4+12+4+4+4
 
Die 6 kann man auch mit einer Schleife lösen.
Code:
for ($i=2; $i<24; $i++) {
    $mod=$i%10;
    if ($mod==2 or $mod==3) {
        echo 'c' . $i . ' ';
    } else {
        $i+=7;
    }
}

Der Modulo-Operator % bestimmt den Rest bei einer Division (in diesem Fall also die letzte Stelle der Zahl). Anschließend werden nur die entsprechenden Schleifendurchläufe ausgegeben. Den else-Zweig kann man auch komplett weglassen, der dient nur der Effizienz.
 
Die Variable $i wird um 7 erhöht, also die Kurzschreibweise von $i = $i +7;
 
Zurück
Oben