07 Kontrollstrukturen
if
Das if-Konstrukt ist eines der wichtigsten Features vieler Programmiersprachen, so auch in PHP. Das Konstrukt ermöglicht die bedingte Ausführung von Codefragmenten.
if(ausdruck) {
anweisung;
}
Nur wenn ausdruck
den Wert true
ergibt, wird anweisung
ausgeführt.
if($a > $b) {
echo '$a ist grösser als $b';
}
Operatoren
Vergleichs-Operatoren
Um zwei Werte in PHP zu vergleichen, gibt es die Vergleichsoperatoren ==
und ===
. Ein Vergleichs-Ausdruck gibt immer einen boolschen Wert von true
oder false
zurück.
Beispiel
Name
Ergebnis
$a == $b
Gleich
Gibt true
zurück, wenn $a gleich $b ist.
$a === $b
Identisch
Gibt true
zurück, wenn $a gleich $b ist und beide vom gleichen Typ sind.
$a != $b
Ungleich
Gibt true
zurück, wenn $a ungleich $b ist.
$a !== $b
Nicht identisch
Gibt true
zurück, wenn $a ungleich $b ist oder nicht vom gleichen Typ sind.
$a < $b
Kleiner als
Gibt true
zurück, wenn $a kleiner als $b ist.
$a > $b
Grösser als
Gibt true
zurück, wenn $a grösser als $b ist.
$a <= $b
Kleiner Gleich
Gibt true
zurück, wenn $a kleiner oder gleich $b ist.
$a >= $b
Grösser Gleich
Gibt true
zurück, wenn $a grösser oder gleich $b ist.
Typenschwache und typenstarke Vergleiche
In PHP können typenschwache oder typenstarke Vergleiche durchgeführt werden. Bei typenschwachen Vergleichen (==
, !=
) wird der Wert der Variablen unabhängig von ihren Typen verglichen. Bei typenstarken Vergleichen (===
, !==
) müssen Wert und Typ beider Variablen identisch sein.
$a = 1; // Integer
$b = "1"; // String
var_dump($a == $b); // 1 == "1"
// true
var_dump($a === $b); // 1 == "1"
// false
// -------------------------------------
$a = 1; // Integer
$b = true; // Boolean
var_dump($a == $b); // 1 == true
// true
var_dump($a === $b); // 1 === true
// false
Der typenstarke Ungleich-Operator (!==
) ist wahr, wenn der Wert oder der Typ unterschiedlich ist. So kann z.B. unterschieden werden, ob ein Teil-String in einem Text am Anfang (die Funktion strpos()
liefert 0
) oder gar nicht (strpos()
liefert false
) vorkommt.
var_dump(strpos('hallo welt', 'hallo') != false); // 0 != false
// false
var_dump(strpos('hallo welt', 'hallo') !== false); // 0 !== false
// true
Tabelle zu Typenvergleichen in PHP
Logische Operatoren
Um mehrere Vergleiche zu verbinden oder einen Vergleich umzukehren, können logische Operatoren verwendet werden.
and
or
xor
&&
||
!
if($a == 1 && $b == 2) { // $a == 1 and $b == 2
echo '$a hat einen Wert von 1, $b hat einen Wert von 2.';
}
if($a == 1 || $b == 2) { // $a == 1 or $b == 2
echo '$a hat einen Wert von 1 oder $b hat einen Wert von 2.';
}
if($a == 1 xor $b == 2) {
echo '$a hat einen Wert von 1 oder $b hat einen Wert von 2, jedoch nicht beides.';
}
if( ! $a == 1) {
echo '$a hat nicht einen Wert von 1.';
}
Tabelle zu Logische Operatoren in PHP
else
Oft will man eine Anweisung ausführen, wenn eine bestimmte Bedingung erfüllt ist, und eine andere Anweisung, wenn dies nicht der Fall ist. Dies ist der Einsatzzweck von else
.
if($a > $b) {
echo '$a ist grösser als $b';
} else {
echo '$a ist nicht grösser als $b';
}
Ternärer Operator
Um eine einfache if/else
-Bedingung zu erstellen, kann auch der Ternäre Operator
verwendet werden. Dies ist besonders bei der Zuweisung von bedingten Werten an eine Variable eine leserliche Alternative.
// (if) ? then : else;
$text = ($alter >= 18) ? 'volljährig' : 'minderjährig';
// Entspricht
if($alter >= 18) {
$text = 'volljährig';
} else {
$text = 'minderjährig';
}
Die Klammern ( )
sind optional.
elseif
elseif
, wie der Name schon sagt, ist eine Kombination aus if
und else
. Wie else
erweitert es eine if
-Kontrollstruktur, um alternative Befehle auszuführen, wenn die ursprüngliche if
-Bedingung nicht zutrifft.
if($a > $b) {
echo '$a ist grösser als $b';
} elseif($a == $b) {
echo '$a ist gleich gross wie $b';
} else {
echo '$a ist nicht grösser als $b';
}
while
Die Bedeutung einer while
-Schleife ist simpel. Die Schleife weist PHP an, die untergeordnete Anweisung wiederholt auszuführen, solange die while
-Bedingung zutrifft. Die Bedingung wird jedes Mal am Anfang der Schleife überprüft.
// Zahlen von 1 bis 10 ausgeben
$zahl = 1;
while ($zahl <= 10) {
echo $zahl++; // Wert ausgeben, dann um 1 erhöhen
}
for
for
-Schleifen sind die komplexesten Schleifen in PHP. Die Syntax einer for
-Schleife ist:
for (ausdruck1; ausdruck2; ausdruck3) {
anweisung;
}
ausdruck1
wird vor Ausführung der Schleife ausgeführt.
ausdruck2
wird am Anfang jedes Schleifendurchlaufs ausgeführt. Wenn diese true
ergibt, wird die Schleife fortgesetzt. Ergibt sie false
, wird die Ausführung der Schleife abgebrochen.
ausdruck3
wird am Ende jedes Schleifendurchlaufs ausgeführt.
// Zahlen von 1 bis 10 ausgeben
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
foreach
Das foreach
-Konstrukt bietet eine einfache Möglichkeit durch Arrays zu iterieren (=schrittweise durchlaufen).
// Zahlen von 1 bis 10 ausgeben
$zahlen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // = range(1, 10)
foreach($zahlen as $zahl) {
echo $zahl;
}
Es existiert eine zweite Schreibweise für foreach
, bei der zusätzlich der Array-Schlüssel in eine Variable geschrieben wird.
$wochentage = [
'Mo' => 'Montag',
'Di' => 'Dienstag',
'Mi' => 'Mittwoch',
'Do' => 'Donnerstag',
'Fr' => 'Freitag',
'Sa' => 'Samstag',
'So' => 'Sonntag',
];
foreach($wochentage as $abkuerzung => $wochentag) {
echo "{$wochentag} kürzt man ab als {$abkuerzung}.<br>";
// Montag kürzt man ab als Mo.
}
Alternative Schreibweisen
Für Kontrollstrukturen gibt es eine alternative Schreibweise, die besonders beim Generieren von HTML oft besser lesbar ist.
Bei der alternativen Schreibweise werden keine { }
verwendet:
if($x == 1): // Doppelpunkt anstelle von {
echo 'x = 1';
endif; // `endif` anstelle von }
Anwendungsbeispiel beim Generieren von HTML:
<?php if(count($options) > 0): ?>
<select name="auswahl">
<?php foreach($options as $value => $option): ?>
<option value="<?= $value ?>"><?= $option ?></option>
<?php endforeach; ?>
</select>
<?php endif; ?>
Herkömmliche Schreibweise...
<?php if(count($options) > 0) { ?>
<select name="auswahl">
<?php foreach($options as $value => $option) { ?>
<option value="<?= $value ?>"><?= $option ?></option>
<?php } ?>
</select>
<?php } ?>
Aufgabe
Kommentiere nun sämtliche Ausgabefunktionen in der Datei index.php
aus. Kommentiere in der Datei index.php
die Script-Einbindung der Datei index.view.php
wieder ein.
Ändere die Datei index.view.php
so ab, dass alle Fahrzeuge aufgelistet werden, welche du heute benutzt hast:
Heute bin ich mit dem Auto gefahren.
Heute bin ich mit dem Velo gefahren.
Heute bin ich mit dem Bus gefahren.
Last updated
Was this helpful?