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!

Letzte Posts aus unserem Forum

Wer kennt .....

Hallo erstmal wer kennt von euch einen WEbprogrammieren,desginer der mir eine Seite erstellen kann ,Communityportal sowas in der art wie ... » mehr

von NCWebmaster am Mittwoch, 7. Oktober 2009 00:32 in PHP - bisher 1 Antwort
Letzter Beitrag: Mittwoch, 7. Oktober 2009 13:26 von kalle

Hallo auch, da gibt es sicher viele die das machen würden, allerdings deutlich weniger die es auch tatsächlich machen könnten - noch einmal weniger ... » mehr

oh Mann

Hallo erstmals..... also ich kenn mich ja nicht so aus, aber ich denke die Menschheit fliegt auf den Mond, dann müsste es auch eine Lösung für mein ... » mehr

von Dummbazz am Dienstag, 24. Februar 2009 15:11 in PHP - bisher 2 Antworten
Letzter Beitrag: Mittwoch, 25. Februar 2009 11:48 von Dummbazz

Danke für die aufmunternde Worte... ... » mehr

counter auch ohne datenbank?

tach auch, ich habe nach einem besucherzähler gesucht, der auf meiner seite anzeigt, wieviele besucher sich dort aufhalten. allerdings habe ich ... » mehr

von marcel am Montag, 8. Dezember 2008 12:21 in PHP - bisher 1 Antwort
Letzter Beitrag: Montag, 8. Dezember 2008 13:34 von alm

Hallo, sicher kann die Counter-Klasse so umgeschrieben werden, dass sie auch ohne Datenbankanbindung funktioniert. Allerdings würde das einer neuen ... » mehr

DAten speichern und abfragen

Hallo an Alle! Hoffe, dass ich hier im richtigen Forum bin. Vielleicht kann mir jemand einen Tip geben. Ich möchte auf meiner Webpage ein Formular ... » mehr

von muenchner am Samstag, 12. Juli 2008 18:31 in PHP - bisher 1 Antwort
Letzter Beitrag: Montag, 14. Juli 2008 08:49 von alm

Hallo, ich bin mir nicht sicher, wie das jetzt gemeint ist! Geht es um die Frage: Sollen die Optionen des Forumlars (die einzelnen Checkboxen) in ... » mehr

Tutorials :: PHP & MySQL - Problem

Hi, zunächsteinmal danke für das Tutorial: ... » mehr

von migges am Montag, 2. Juni 2008 12:05 in PHP - bisher 3 Antworten
Letzter Beitrag: Dienstag, 3. Juni 2008 11:45 von alm

Das mit den Oder-Operatoren wundert mich ein wenig... Welchen Fehler hat der Interpreter an diesen Stellen ausgegeben? Ich habe bislang mit ... » mehr

¬ Tutorials



¬ Insolvenzrecht