- for
- foreach
- while
- do .. while
2. Bedingungen
- if, elseif, else
- switch
- ternärer Operator
Was sagt das Handbuch zu Kontrollstrukturen?
1. for
Schleifen scheinen jedem Programmieranfänger am Anfang kompliziert. Daher wollen wir uns Diese hier mal näher anschauen.
for (ausdruck_a; ausdruck_b; ausdruck_c)
{
Anweisung
}
Also noch mal im Ablauf:
1. ausdruck_a wird ausgeführt
2. wenn ausdruck_b gleich TRUE, also wahr beginnt die Schleife
3. ausdruck_c wird ausgeführt/geprüft
Anmerkung:
- Jeder Ausdruck könnte auch leer sein, aber dazu kommen wir später.
- Jeder Ausdruck wird durch ein Semikolon getrennt, damit PHP die einzelnen Ausdrücke unterscheiden kann.
Und nun ein einfaches Beispiel:
<?php
for($i=0;$i<17;$i=$i+1)
{
echo $i.'<br />';
}
?> Die Variable $i wird gleich 0 gesetzt. Die for-Schleife überprüft, ob der Wert der Variable $i kleiner als 17 ist, wenn ja, dann wird die Schleife ausgeführt, wenn nicht - dann logischerweise nicht. mit jeder erfolgreich durchgelaufenen Schleife wird die Variable $i um 1 erhöht.
Der Wert der Variablen wird ausgegeben. Damit die einzelnen Werte noch unterscheidbar sind, wird ein Zeilenumbruch mit ausgegeben.
Profis würde es noch kürzer schreiben, aber es geht hier ersteinmal darum zu verstehen, wie die for-Schleife funktioniert.
Ich habe erwähnt, dass man jeden Ausdruck auch leer lassen könnte. Das scheint erst einmal sinnlos, aber es gibt Fälle (da es ja funktioniert), da macht es Sinn.
Die for-Schleife lässt sich nämlich auch mit einem
break;
Wenn nun also in der for-Schleife eine Überprüfung stattfindet (z.B. mit der if-Kontrollstruktur), so lässt sich gezielt die Schleife beenden.
Wenn nämlich angenommen der ausdruck_c leer ist, so würde PHP der Meinung sein, dass die Bedingung für die Ausführung der Schleife immer TRUE ist und die Schleife ewig ausführen. Eine Endlosschleife währe programmiert. Mit einem gezielten break könnte man dann die Schleife beenden.
ausdruck_a lässt sich auch außerhalb der Schleife definieren, natürlich vorher. Und ausdruck_c, welcher zum Ende der Schleife ausgeführt wird, kann man auch in der Schleife definieren.
Beispiel:
<?php
$i=0;
for(;;)
{
// wenn $i groß genug, dann Schleife beenden:
if($i>35)
{
break;
}
$i = $i+1;
}
?> - wenn die Schleife nur eine Anweisung enthält:
for(...;...;...)
{
Anweisung // <###
}
Gleiches gilt auch für die if-Kontrollstruktur.
Damit könnte man das erste Beispiel so abkürzen:
<?php
for($i=0;$i<17;$i=$i+1)
echo $i.'<br />';
?> 2. foreach
mit foreach ist es möglich in einem Array zu arbeiten.
Lies dazu auch:
Mit foreach ist es möglich ein Array zu durchlaufen.
Dafür erstellen wir uns zunächst ein Array, um es gleich zu zeigen, wie es funktioniert:
<?php
$array_name = array('eins', 'zwei', 'drei', 'vier', 'und', 'so', 'weiter');
?> <?php
$array_name = array('eins', 'zwei', 'drei', 'vier', 'und', 'so', 'weiter');
foreach ($array_name as $wert_des_array)
echo 'Wert: '.$wert_des_array.'<br />\n';
?> Wert: eins Wert: zwei Wert: drei Wert: vier Wert: und Wert: so Wert: weiter
<?php
$array_name = array('eins', 'zwei', 'drei', 'vier', 'und', 'so', 'weiter');
foreach ($array_name as $wert_des_array => $value)
echo 'Schlüssel: '.$wert_des_array.'; Wert: '.$value.'<br />'."\n";
?> Schlüssel: 0; Wert: eins Schlüssel: 1; Wert: zwei Schlüssel: 2; Wert: drei Schlüssel: 3; Wert: vier Schlüssel: 4; Wert: und Schlüssel: 5; Wert: so Schlüssel: 6; Wert: weiter
3. while
Die while-Schleifen sind die einfachste Form von Schleifen in PHP.
Die Grundform einer while-Anweisung lautet:
while (ausdruck) Anweisung
Die Schleife wird solange und so oft ausgeführt, wie der ausdruck TRUE ist.
Sollte der ausdruck innerhalb der Schleife geändert werden, so wird die Schleife dennoch bis zum Ende ausgeführt.
Da die while-Schleife stets vor dem Durchlaufen prüft, ob ausdruck TRUE ist, kann es also auch vorkommen, dass die Schleife gar nicht ausgeführt wird.
Nun aber mal ein Beispiel:
<?php
$i = 1;
while ($i <= 10)
{
echo $i.'<br />';
$i++; // das gleiche wie $i=$i+1;
}
?> in 1: wird die Variable $i definiert.
in 2: die Schleife wird gestartet, sofern $i kleiner oder gleich 10 ist
in 3: mit der Klammer startet die Schleife. Bei nur einer Anweisung in der Schleife können die beiden Klammern { und } wegfallen
in 4: Ausgabe von $i
in 5: die Variable $i wird um 1 erhöht
in 6: Schleife wird beendet.
Man die while-Schleife auch noch ein wenig tricky verwenden, aber dies deckt den Normalfall ab.
4. do .. while
die do...while - Schleife funktioniert ähnlich der while-Schleife mit dem wesentlichen Unterschied, dass diese Schleife mindestens einmal ausgeführt wird, da hier erst zum Ende des Durchlaufes überprüft wird, ob sie ein weiteres Mal durchlaufen soll.
Hier mal ein Beispiel:
<?php
$i = 0;
do
{
$i++;
echo $i.' Zeile<br />';
}
while ($i<10);
?> In diesem Beispiel wird lediglich von 1 bis 10 gezählt.
5. if, elseif, else
if
mit der if-Kontrollstruktur habt ihr die Möglichkeit dynamisch zu werden! Es wird geprüft, ob der Ausdruck in der Klammer nach if wahr ist, und wenn ja, dann wird die folgende Anweisung ausgeführt. Andernfalls nicht.
Beispiel:
<?php
$a = 1;
$b = 3;
if($a > $b)
echo '';
?> Wie ihr seht, ist die Ausgabe leer - logisch!
Man könnte nun folgendes erweitern:
<?php
$a = 1;
$b = 3;
if($a > $b)
echo '$a ('.$a.') ist größer als $b ('.$b.')';
if($a < $b)
echo '$a ('.$a.')ist kleiner als $b ('.$b.')';
?> else
Mit dem Beispiel von eben ergibt sich daraus folgendes. Es wird geprüft, ob die Bedingung wahr ist und andernfalls wird PHP den else-Abschnitt - sofern verfügbar - ausführen.
<?php
$a = 1;
$b = 3;
if($a > $b)
echo '$a ('.$a.') ist größer als $b ('.$b.')';
else
echo '$a ('.$a.') ist kleiner als $b ('.$b.')';
?> $a ist kleiner als $b
normal wäre die Blöcke nach if und else mit den Klammern { und } einzugrenzen. Hier konnte darauf verzichtet werden, da nur eine Zeile folgte.
elseif
Wenn wir nun das Beispiel ändern, so wird keine der beiden Bedingungen erfüllt sein.
<?php
$a = 3;
$b = 3;
if($a > $b)
echo '$a ('.$a.') ist größer als $b ('.$b.')';
else
echo '$a ('.$a.') ist kleiner als $b ('.$b.')';
?> <?php
if ($a > $b)
echo '$a ('.$a.') ist größer als $b ('.$b.')';
elseif ($a == $b)
echo '$a ('.$a.') hat den gleichen Wert wie $b ('.$b.')';
else
echo '$a ('.$a.') ist kleiner als $b ('.$b.')';
?> 6. switch
Mit switch besteht in PHP die Möglichkeite abhängig vom Wert einer Variable verschiedene Anweisungen zu starten.
Zwar wäre dies auch mit dem elseif-Konstrukt möglich, aber mit switch ist es noch einfacher.
Hier ein Beispiel:
<?php
$i = 2;
switch ($i)
{
case 0:
echo '$i ist gleich 0';
break;
case 1:
echo '$i ist gleich 1';
break;
case 2:
echo '$i ist gleich 2';
break;
}
?> Für den Fall, dass $i gleich 0 ist, so wird der erste echo-Befehl ausgeführt und die switch-Anweisung beendet (wegen des break). Andernfalls wird geprüft, ob einer der weiteren case-Bedingungen zutrifft.
Für den Fall, dass die Variable $i den Wert 3 gehabt hätte, so wäre keine der echo-Befehle ausgeführt.
switch kann um einen default-Wert erweitert werden, wenn keine der Fälle eintritt, so wird die default-Anweisung ausgeführt:
<?php
$i = 10;
switch ($i)
{
case 0:
echo '$i ist gleich 0';
break;
case 1:
echo '$i ist gleich 1';
break;
case 2:
echo '$i ist gleich 2';
break;
default:
echo '$i ist stimmt mit keinem der Fälle überein.';
}
?> Das beenden der switch-Anweisung bei default ist logischerweise nicht mehr möglich.
Nun könnte man durch das Weglassen von break-Befehlen dafür sorgen, dass folgender Code funktioniert:
<?php
$i = 3;
switch ($i)
{
case 0:
echo '$i ist gleich 0';
case 1:
echo '$i ist gleich 1 oder kleiner';
case 2:
echo '$i ist gleich 2 oder kleiner';
case 3:
echo '$i ist gleich 3 oder kleiner';
case 4:
echo '$i ist gleich 4 oder kleiner';
case 5:
echo '$i ist gleich 5 oder kleiner';
case 6:
echo '$i ist gleich 6 oder kleiner';
case 7:
echo '$i ist gleich 7 oder kleiner';
case 8:
echo '$i ist gleich 8 oder kleiner';
}
?> 7. ternärer Operator
Infos im PHP-Handbuch findet ihr hier:
es gibt ja die Möglichkeit der Fallunterscheidung mit if-else:
<?php
$case = TRUE;
if($case)
{
echo 'Fall 1';
}
else
{
echo 'Fall 2';
}
?> kurz: wenn der Ausdruck in der Klammer wahr ist, dann ausdruck_1 ausgegeben, sonst ausdruck_2:
<?php
$case = TRUE;
echo ($case)?"ausdruck_1":"ausdruck_2";
?> 
Bereiche
Kategorien (Alle Bereiche)
Neue Artikel
Neue Blog-Einträge
Neue Beiträge
STDIN-Daten auslesen, falls vorhanden
Moin moin!
Server-Administratoren arbeiten ja zumeist auf der Console und nutzen kleine oder große Shell-Scripte, um ihre Arbeitsabläufe zu vereinfachen oder Funktionen bereit zu stellen, für die es noch keine Komplett-Lösung gibt. Hierbei sind die Möglichkeiten nahezu grenzenlos.