PHP If Else Statement

Zur Realisierung von Fallunterscheidungen unter PHP steht, wie in vielen anderen Programmiersprachen auch, die IF-Abfrage zur Verfügung. Sie wertet die in Klammern notierte Abfragebedingung aus. Diese Bedingung kann dabei beliebig komplex werden. Im Prinzip handelt es sich bei der Abfragebedingung um einen Ausdruck, der aus einer oder mehreren logisch verknüpften Komponenten besteht. Dabei können auch mehrere Variablen zum Vergleich herangezogen werden, die per Rechenoperationen weiterverarbeitet oder auch direkt mit bestimmten Werten verglichen werden. Auch können Funktionsaufrufe in IF-Statements verwendet werden, die ihrerseits einen Ergebniswert liefern. Trifft die per IF-Anweisung formulierte Bedingung zu, so wird der PHP-Code ausgeführt, welcher im Körper des Statements steht. Anderenfalls wird mit der Verarbeitung des Quelltextes fortgefahren, welcher hinter dem IF-Block steht.

Sollen bei zutreffender Bedingung mehrere Anweisungen ausgeführt werden, so ist der Körper der Bedingung entsprechend zu klammern. Ansonsten genügt es, die auszuführende Anweisung hinter der Abfrage zu notieren. Nach dem Block, welcher die Statements enthält, die bei zutreffender Bedingung ausgeführt werden sollen, kann ein optionaler Else-Block folgen. Dieser kann entweder eine weitere Bedingung abfragen – dies kann beliebig oft wiederholt werden – oder aber den IF-Block mit Angabe eines alternativ auszuführendem Code-Abschnitts beenden. Bitte beachten Sie, dass geschachtelte IF-Bedingungen ihre Tücken haben können, wenn auf die Klammerung der auszuführenden Anweisungen verzichtet wird. Ein Else-Abschnitt bezieht sich stets auf das letzte notierte IF-Statement. Beachten Sie in diesem Zusammenhang auch unsere Beispiele zu If in JavaScript.

PHP If-Else Beispiele: Abfragen mit Variablen und Arrays

Im folgenden werden einige Beispiele zum Umgang mit der bedingten Ausführung von PHP-Code vorgestellt. Die If-Bedingungen verarbeiten dabei Variablen mit Zahlenwerten aber auch Arrays und Zeichenketten werden zu Vergleichen herangezogen. Mittels echo werden die den gegebenen Umständen entsprechenden Ausgaben generiert.

<?php
// Zahlenvariablen prüfen
// Variable initialisieren
$val = 1;
// Einstufiges IF-Else-Konstrukt
if ($val != 0)
    echo "Nicht 0!<br>";
else
    echo "Wert ist 0!<br>";

// Mehrstufige IF-Else-Bedingungen
if ($val == 0)
    echo "Angegebener Wert ist 0!<br>";
else if ($val < 0)
    echo "Wert ist kleiner als 0!<br>";
else if ($val > 0)
    echo "Der Wert ist groesser als 0<br>";
?>

Nicht 0!
Der Wert ist groesser als 0

<?php
// Variablen vom Typ String
// String Variable initialisieren
$strvar = 'Inhalt';
// Anzahl der Zeichen im String gleich 0?
if (strlen ($strvar) == 0)
    echo "String ist leer!<br>";
// Vergleich mittels Gleichheitsoperator
// Alternativ kann aber auch strcmp oder strcasecmp verwendet werden.
// Dabei führt strcmp einen binären Vergleich durch und strcasecmp
// ignoriert zusätzlich Groß- und Kleinschreibung.
else if ($strvar == 'Inhalt')
    echo "In strvar ist das Wort 'Inhalt' gespeichert!<br>";

// Array-Variablen testen
$avar = array (1, 2, 3);
if (is_array ($avar)) {
    // Erst hier können wir sicher sein, dass wir ein Array haben
    // Größe des Arrays abfragen
    if (sizeof ($avar) == 0)
        echo "Das angegebene Array ist leer!<br>";
    else
        echo "Es sind " . sizeof ($avar) . " Elemente im Array gespeichert!<br>";
}
else
    echo "Angegebene Variable ist kein Array!<br>";

// Typbestimmung von Variablen
// Variable initialisieren
// Dabei wird durch die Zuweisung eines Strings zugleich der Typ bestimmt
$variable = 'Zeichenkette';
// Mit Funktion getype die Typbezeichnung ermitteln
// Alternativ kann auch die Funktion is_string verwendet werden, die TRUE liefert,
// Wenn eine Zeichenkette in der Variablen abgelegt ist.
if (gettype ($variable) == 'string')
    echo "Wir haben eine String-Variable<br>";
?>

In strvar ist das Wort 'Inhalt' gespeichert!
Es sind 3 Elemente im Array gespeichert!
Wir haben eine String-Variable

If-Statement und Bitoperationen

Das nächste Beispiel sendet, abhängig vom Medientyp und Dateityp, einen passenden header an den Browser, damit die Datei vom Webbrowser entsprechend ihres Typs behandelt wird. Die Dateiinformationen stecken dabei in den Variablen ftyp und fformat, die anhand einer zu sendenden Datei bereits vorbelegt werden. Diese Dateiinformationen werden den Variablen mittels Bitoperationen im If-Statement entnommen. Nach dem Header kann das zugehörige File übertragen werden, was allerdings nicht Bestandteil des Beispiels ist.

<?php
// Einige Konstanten definieren
// Dateitypen
define ('TYP_HTML', 1);
define ('TYP_BILD', 2);
define ('TYP_ARCHIV', 4);

// Dateiformate
define ('FORMAT_JPG', 1);
define ('FORMAT_GIF', 2);

// Variablen, die geprüft werden sollen initialisieren
$ftyp = TYP_BILD;
$fformat = FORMAT_GIF;

// Variablen mit Bitoperationen überprüfen
// Haben wir eine Bilddatei im GIF-Format?
if ($ftyp && TYP_BILD AND $fformat && FORMAT_GIF)
    // Header für ein GIF-File senden, damit der Browser
    // weiss, was er geliefert bekommt
    header ("content-type: image/gif");
?>

Klammerung bei If-Else

<?php
// VORSICHT BEIM WEGLASSEN DER KLAMMERUNG VON IF-ELSE-STRUKTUREN
// Variablen vorbelegen
$a = 6;
$b = 6;
// Folgender Block liefert nicht das gewünschte Ergebnis
if ($a < 5)
    if ($b < 5)
        $b = $b + 1;
else if ($a > 5)    // Else-Block gehört, anders als die Einrückung suggeriert, zum 
            // letzten IF-Statement (b < 5) und nicht zu a < 5.
            // Dies ist aber nicht gewollt und in der Verarbeitungshierarchie
            // unsinnig, da diese Zeile nur dann erreicht wird, wenn a < 5 ist.
            // Dieser Fall wird allerdings nie eintreten, da a nicht kleiner und
            // zugleich größer als 5 sein kann.
    if ($b > 5)
        $b = $b - 1;
echo "a: $a b: $b<br>";

// Das selbe nochmal mit Klammerung
$a = 6;
$b = 6;
if ($a < 5) {
    if ($b < 5)
        $b = $b + 1;
}
else if ($a > 5)    // Gehört in diesem Fall zu a < 5, da b < 5 durch Klammerung geschachtelt ist
    if ($b > 5)    // Hier kann auf eine Klammerung verzichtet werden, da kein weiteres else
            // unmittelbar auf das If folgt.
        $b = $b - 1;
echo "a: $a b: $b<br>";
?>

a: 6 b: 6
a: 6 b: 5

PHP If-Anweisung: Existenz von Variablen mit Empty bzw. Isset prüfen

<?php
// Wurde die Variable zuvor zumindest definiert?
if (!isset ($v1))    // Der !-Operator steht für eine Negierung des von isset gelieferten
            // Rückgabewertes. Liefert isset den Wert TRUE so macht die Negierung
            // ein FALSE daraus. Im Falle von FALSE ist das Ergebnis TRUE.
    echo "Noch nicht definiert!<br>";
// Variable des Typs String definieren
// Hier wird nur der Typ festgelegt. Eine Initialisierung erfolgt dagegen nicht!
settype ($v1, 'string');
if (isset ($v1))
    echo "Variable ist nun definiert!<br>";

// Wurde eine Variable bereits initialisiert?
if (empty ($v1))
    echo "Noch nicht initialisiert!<br>";
// Initialisierung durch Zuweisung eines Wertes
$v1 = 'Is was drin!';
if (!empty ($v1))
    echo "Variable hat den folgenden Inhalt: " . $v1;
?>

Noch nicht definiert!
Variable ist nun definiert!
Noch nicht initialisiert!
Variable hat den folgenden Inhalt: Is was drin!

¬ Tutorials



¬ Insolvenzrecht