Datentypen und Inhalte in PHP prüfen

Auf PHP-Seiten werden häufig Bedingungen geprüft und der weitere Programmablauf soll dabei vom Ergebnis der Prüfung abhängen. Für solche bedingten Programmlogiken kann man z.B. die if-, else-Abfrage verwenden. Als Bedingung kann man unter anderem eine Variable auf den Datentyp oder den Inhalt prüfen, z.B. ob der Datentyp vom Typ int, string oder float ist oder der Inhalt nur aus Ziffern besteht. Hierfür kann man die folgenden Funktionen verwenden.

  • is_string() (Prüfen, ob Datentyp string ist)
  • is_int() (Prüfen, ob Datentyp int ist)
  • is_integer() (Identisch wie is_int(), prüfen auf Datentyp int)
  • is_long() (Identisch wie is_int(), prüfen auf Datentyp int)
  • is_float() (Prüfen, ob Datentyp float ist)
  • is_double() (Identisch wie is_float(), prüfen auf Datentyp float)
  • is_real() (Identisch wie is_float(), prüfen auf Datentyp float)
  • is_bool() (Prüfen, ob Datentyp bool ist)
  • is_scalar() (Prüfen, ob es ein skalarer Datentyp ist)
  • is_array() (Prüfen, ob Datentyp ein Array ist)
  • is_null() (Prüfen, ob Variable NULL enthält)
  • is_object() (Prüfen, ob Variable ein Objekt ist)
  • is_resource() (Prüfen, ob Variable eine Ressource ist)
  • is_numeric() (Prüfen, ob eine Variable eine Zahl bzw. aus Ziffern besteht)
  • is_callable() (Prüfen, ob man den Inhalt der Variable als Funktion aufrufen kann)
  • isset() (Prüfen, ob Variable existiert, dessen Inhalt nicht NULL ist)

Die zu prüfende Variable wird dabei innerhalb der runden Klammern angegeben, z.B. in der Form is_string($a). Bei der if-, else-Abfrage wird die Bedingung ebenfalls in runden Klammern angegeben. Wenn man als Bedingung eine Prüffunktion verwendet, sodass man z.B. angibt, dass als Bedingung die Variable vom Typ string sein muss, dann setzt man die Prüffunktion innerhalb der runden Klammern als Bedingung ein und erhält einen Ausdruck mit zwei schließenden runden Klammern am Ende.

Bedingung mit Typprüfung

Nachfolgend ist ein Beispielcode, bei dem der Programmcode innerhalb der geschweiften Klammern nach der Bedingung ausgeführt wird, wenn die Variable vom Typ string ist und somit die Bedingung zutrifft. Wenn die Bedingung nicht zutrifft, wird der Programmteil innerhalb der geschweiften Klammern nach else ausgeführt.

$a = 'Zeichenkette';

// Prüfe, ob $a vom Typ string ist
if (is_string($a))
{
  echo 'Datentyp ist string';
}
else
{
  echo 'Datentyp ist nicht string';
}

Man kann auch die Typprüfung negieren und dadurch z.B. prüfen, ob eine Variable nicht vom Typ string ist. Hierfür verwendet man ein Ausrufezeichen vor der Typprüfung. In Verbindung mit der if-Abfrage würde man als Bedingung folgenden Ausdruck erhalten.

Bedingung mit negierter Typprüfung

Beim folgenden Beispiel wird der Programmcode innerhalb der geschweiften Klammern nach der Bedingung ausgeführt, wenn der Datentyp der Variable kein string ist. Ist der Datentyp ein string, wird der Programmteil nach else ausgeführt.

$a = 'Zeichenkette';

// Prüfe, ob $a vom Typ string ist
if (!is_string($a))
{
  echo 'Datentyp ist nicht string';
}
else
{
  echo 'Datentyp ist string';
}

Nach demselben Schema kann man auch die anderen Prüffunktionen in Verbindung mit der if-, else-Abfrage verwenden. Um das Verhalten ausführlich zu testen, kann man den Beispielcode variieren, der Variable $a verschiedene Werte zuweisen und die Ausgabe testen. In der Praxis wird eine Typprüfung als Bedingung für die Programmausführung aber meistens bei den Variablen vorgenommen, deren Werte sich aus dem Programmablauf ergeben bzw. sich ändern können. Das können z.B. Ergebnisse von Berechnungen, Werte aus Datenbankabfragen oder Formularen sein.