if (value('TF03') == 1) { // Analog oder ISDN?
question('IN15'); // Frage nach Tarif
} else {
// Im else-Teil steht (verschachtelt) ein neuer Filter
if (value('TF03') == 2) { // DSL-Anschluss?
question('IN16'); // Frage zum DSL-Anschluss
} else {
// Im else-Teil steht (verschachtelt) ein neuer Filter
if (value('TF03') == 3) { // Sonstiger-Anschluss?
question('IN17'); // Frage zum Kabel
} else {
html('Sie haben keine Antwort gegeben!
');
}
}
}
Solche verschachtelten Konstruktionen können sinnvoll sein -- aber im vorliegenden Fall funktioniert es auch übersichtlicher.
===== IF und ELSE fortsetzen =====
Folgende Konstruktion liefert genau dasselbe Ergebnis wie das vorhergehende Beispiel. Auch sie könnte beliebig fortgesetzt werden.
// Beispiel für else if - nicht verschachtelt
if (value('TF03') == 1) { // Analog oder ISDN?
question('IN15'); // Frage nach Tarif
} else if (value('TF03') == 2) { // DSL-Anschluss?
question('IN16'); // Frage zum DSL-Anschluss
} else if (value('TF03') == 3) { // Sonstiger Anschluss?
question('IN17'); // Frage zum Kabel
} else {
html('Sie haben keine Antwort gegeben!
');
}
===== ELSE + IF = ELSEIF =====
In PHP gibt es zur einfacheren Schreibweise den Befehl ''elseif''. Die Anweisung nach diesem Befehl wird dann ausgeführt, wenn die Bedingung nach ''elseif'' erfüllt ist, aber keine vorhergehende. Praktisch ist ''elseif'' nichts anderes als das ''else if'' im obigen Beispiel.
// PHP-Code – Beispiel für elseif
if (value('TF03') == 1) { // Analog oder ISDN?
question('IN15'); // Frage nach Tarif
} elseif (value('TF03') == 2) { // DSL-Anschluss?
question('IN16'); // Frage zum DSL-Anschluss
} else { // Keines der vorigen?
// Die Prüfung der letzten Bedingung kann man sich sparen,
// wenn für die Frage der Antwortzwang aktiviert wurde
question('IN17'); // Frage zum Kabel
}
Man kann den Wert von TF03 auch vorab in eine Variable ([[variables#php-variablen|PHP-Variablen]]) speichern. Dadurch wird es nochmals übersichtlicher:
// Wert in Variable speichern
$cn = value('TF03');
if ($cn == 1) { // Analog oder ISDN?
question('IN15'); // Frage nach Tarif
} elseif ($cn == 2) { // DSL-Anschluss?
question('IN16'); // Frage zum DSL-Anschluss
} else { // Keines der vorigen?
question('IN17'); // Frage zum Kabel
}
===== SWITCH =====
Falls wie im Beispiel nur verschiedene Ausprägungen einer Variable abgefragt werden sollen, ist es natürlich etwas umständlich, jedes mal das ''value('TF03')'' anzuschreiben. Stattdessen gibt es in PHP die ''switch''-Konstruktion.
Dabei gibt man hinter dem ''switch'' in Klammern an, welcher Wert überprüft werden soll. Hinter jeweils einem ''case'' stehen dann die verschiedenen Möglichkeiten, gefolgt von einem Doppelpunkt.
**Wichtig:** Hinter den Befehle muss aber (im Gegensatz zur ''elseif''-Konstruktion) immer ein ''break'' stehen -- sonst wird __alles ab__ dem ''case'' ausgeführt.
switch (value('TF03')) {
case 1:
question('IN15'); // Frage nach Tarif
break;
case 2:
question('IN16'); // Frage zum DSL-Anschluss
break;
case 3:
question('IN17'); // Fragen zum Kabel
break;
default: // Default wird verwendet, wenn kein case zutrifft
html('Ungültige Antwort
');
break; // Das letzte break muss nicht sein
}
// Weitere Fragen, die alle gestellt bekommen
question('BB01');
Natürlich lässt sich dies auch platzsparender schreiben:
switch (value('TF03')) {
case 1: question('IN15'); break; // Frage nach Tarif
case 2: question('IN16'); break; // Frage zum DSL-Anschluss
case 3: question('IN17'); break; // Fragen zum Kabel
default: html('Ungültige Antwort
');
}
// Weitere Fragen, die alle gestellt bekommen
question('BB01');