PHP isset – Prüfen, ob eine Variable existiert

Die PHP-Funktion isset wird dazu verwendet um zu prüfen, ob eine Variable bereits definiert wurde. Als Parameter erwartet die Funktion eine Variable oder eine Variablenliste, deren Existenz geprüft werden soll. Sollen mehrere Variablen geprüft werden, so werden die Variablen durch Kommata voneinander getrennt. Der Rückgabewert ist immer dann TRUE, wenn die angegebene Variable oder die angegebenen Variablen bereits durch eine vorherige Definition bekannt gemacht wurden – werden mehrere Variablen angegeben, so müssen alle existieren, damit TRUE zurückgeliefert wird. Ist die Variable bzw. sind die Variablen bislang nicht definiert, so liefert die Funktion den Return-Wert FALSE. Ebenso verhält es sich, wenn eine Variable den Wert NULL enthält.

PHP If Isset Beispiel 1: Isset in PHP

Im ersten Beispiel zur Funktion isset wird zunächst eine Variable i mit dem Wert 0 initialisert. Darauf folgend wird nun das Ergebnis des Funktionsaufrufs der isset-Funktion ausgegeben. Die Funktion var_export wandelt dabei den von isset gelieferten Wert in ein String um. Danach wird die Variable mit unset wieder gelöscht und ein weiterer Aufruf von isset mit dieser Variable getätigt.

Nun wird die Variable k mit der Konstante NULL initialisert. Mit der If-Abfrage wird wieder auf Existenz der Variable k geprüft. Dieser Aufruf von isset liefert erwartungsgemäß FALSE, was dazu führt, dass die entsprechende Meldung mit Echo ausgegeben wird. Im letzten Aufruf des Scripts werden die Variablen i und j mit isset geprüft. Hier wird die Kurzschreibweise der If-Anweisung verwendet. Liefert die Funktion isset TRUE, so wird das erste String, ansonsten das zweite String ausgegeben.

<?php
    // Variable i initialisieren
    $i = 0;
    // Ergebnis des Aufrufs isset ausgeben
    echo 'i: ' . var_export (isset ($i), true) . '<br>';
    // Zum Vergleich Variablendefinition durch Zerstörung
    // der Variablen i...
    unset ($i);
    // und darauf folgende Ausgabe des Return-Wertes vom
    // Aufruf der isset-Funktion.
    echo 'i: ' . var_export (isset ($i), true) . '<br>';

    // Variable k mit dem Wert NULL (der Konstante) initialisieren
    $k = NULL;
    // Welches Ergebnis liefert isset nun?
    if (isset ($k))
        // isset hat TRUE geliefert
        echo 'k existiert<br>';
    else
        // isset war FALSE
        echo 'k existiert nicht oder ist NULL<br>';

    // Abfrage von isset für mehrere Variablen
    echo isset ($i, $j) ? 'i und j existieren!' : 'Mindestens eine der Variablen existiert nicht!';
?>

i: true
i: false
k existiert nicht oder ist NULL
Mindestens eine der Variablen existiert nicht!

PHP Isset Function Beispiel 2: PHP Array Isset

Das nächste Beispiel zeigt, wie die isset-Function mit einem Array verwendet werden kann. Die Variable a wird mit drei Werten gefüllt und dann wird das Ergebnis des isset-Aufrufs mit der Variablen a ausgegeben. Da die Variable definiert ist, wird an dieser Stelle 1 – für TRUE; wird FALSE geliefert, so erhält man ein Leerstring – ausgegeben. In der nun folgenden For-Schleife werden die im Array vorhandenen Werte einzeln mit isset abgeprüft und die Rückgabewerte der entsprechenden Indexpositionen (von 0 bis length) ausgegeben.

Der letzte Block im Beispiel definiert zuerst ein assoziatives Array und füllt es mit entsprechenden Schlüssel-Wertepaaren. Hier wird nun die Foreach-Schleife genutzt, um durch das Array zu iterieren und auch hier werden die Rückgabewerte von isset ausgegeben.

<?php
    // Array mit drei Werten füllen
    $a = array (4, NULL, 'Wert1');
    // Existiert eine Variable a, so wird bei der Ausgabe des
    // Rückgabewertes vom isset-Aufruf 1 für TRUE ausgegeben.
    echo 'Array a: ' . isset ($a) . '<br>';
    // Jedes einzelne Element des Arrays durchgehen...
    for ($i = 0; $i < sizeof ($a); $i++)
        // und für jeden Index prüfen, welcher Wert von
        // isset geliefert wird.
        echo 'a[' . $i . ']: ' . isset ($a[$i]) . ' ';
    echo '<br>';

    // Assoziatives Array mit Schlüssel-Wertepaaren erzeugen
    $a = array ('ID' => '11da45', 'Bezeichnung' => 'Hundeleine, 2m', 'Farbe' => NULL, 'Preis' => 12.98);
    // Jedes Schlüssel-Wertepaar einzeln durchgehen...
    foreach ($a as $eigenschaft => $wert)
        // uns den Return-Wert von isset für das jeweilige
        // Paar ausgeben.
        echo 'a[' . $eigenschaft . ']: ' . isset ($a[$eigenschaft]) . ' ';
    echo '<br>';
?>

Array a: 1
a[0]: 1 a[1]: a[2]: 1
a[ID]: 1 a[Bezeichnung]: 1 a[Farbe]: a[Preis]: 1

PHP Isset Empty Beispiel 3: Isset in _GET (Parameter des PHP-Scripts)

Als letztes Beispiel sollen die GET-Parameter eines PHP-Scripts geprüft werden. An dieser Stelle birgt die Verwendung der isset-Funktion das Problem, dass die _GET-Variable, in der die dem Script in der URL übergebenen Parameter gespeichert werden, unter PHP zu den vordefinierten Variablen gehört. Deutlich wird dies durch die If-Abfrage zu Angang. Diese Abfrage liefert immer TRUE, da _GET – wenn auch leer – immer definiert ist (die Ausgabe unter der If-Anweisung erfolgt also immer). Soll auf die Existenz von Parametern geprüft werden, so sollte dies unter Verwendung von empty erfolgen. In der zweiten Abfrage im unteren Script-Abschnitt geschieht genau dies – hier wird gefragt, ob das Array _GET nicht leer ist. Wurden Parameter angegeben – bedeutet, dass das in der _GET-Variablen gespeicherte Array Elemente enthält –, so wird die erste Meldung ausgegeben. Empty prüft also, ob das Array Elemente enthält und liefert TRUE, wenn dem so ist – ansonsten FALSE.

<?php
    // Abfrage des _GET-Arrays mit den Parametern über isset.
    // Da _GET eine vordefinierte Variable ist, existiert sie
    // immer und deshalb liefert die folgende Abfrage IMMER
    // ein positives Ergebnis. Dies ist auch dann der Fall,
    // wenn keine Parameter per GET-Request angegeben wurden.
    if (isset ($_GET))
        echo 'Parameter-Array (GET) existiert!<br>';

    // Prüfen, ob dem PHP-Script in der URL Parameter angegeben wurden.
    // Aufgerufen wurde die URL des Scripts dann in der Form:
    // http://www.evocomp.de/redirect.php?ziel=http://www.evocomp.de
    // In diesem Fall ist im assoziativen Array-Element $_GET['ziel']
    // der Wert http://www.evocomp.de gespeichert.
    if (!empty ($_GET))
        echo 'Es wurden Parameter per GET in der URL angegeben!';
    else
        echo 'Dem Script wurden keine Parameter per GET uebergeben!';
?>

Parameter-Array (GET) existiert!
Dem Script wurden keine Parameter per GET uebergeben!

¬ Tutorials



¬ Insolvenzrecht