Einführung
Jeder einzelne Ausdruck in PHP hat in Abhängigkeit von seinem Wert einen
der folgenden internen Typen:
PHP ist eine dynamisch typisierte Sprache, was bedeutet, dass es
standardmäßig nicht notwendig ist, einer Variablen einen Typ zuzuweisen,
weil dieser zur Laufzeit bestimmt wird. Mit Hilfe von
Typ-Deklarationen ist es
jedoch möglich, einige Aspekte der Sprache statisch zu typisieren.
Die verschiedenen Typen, die vom PHP-Typsystem unterstützt werden, können
auf der Seite Typsystem
gefunden werden.
Durch Typen wird die Art der Operationen, die mit ihnen durchgeführt werden
können, eingeschränkt. Wenn jedoch ein Ausdruck oder eine Variable in einer
Operation verwendet wird, die ihr Typ nicht unterstützt, wird PHP versuchen,
den Wert mittels
Typ-Umwandlung (sog.
Type Juggling, Typ-Jonglage) in einen Typ zu überführen, der die Operation
unterstützt. Dieser Prozess hängt von dem Kontext ab, in dem der Wert
verwendet wird. Weitere Informationen hierzu sind im Abschnitt über
Typ-Umwandlung zu
finden.
Hinweis:
Mit einer Typ-Zuweisung
kann man erzwingen, dass ein Ausdruck nach einem bestimmten Typ
ausgewertet wird. Außerdem kann eine Variable mit Hilfe der Funktion
settype() direkt auf einen bestimmten Typ gesetzt werden.
Um den Wert und den Typ eines
Ausdrucks zu ermitteln, kann
die Funktion var_dump() verwendet werden. Den Typ eines
Ausdrucks erhält man mit der
Funktion get_debug_type(). Um jedoch zu prüfen, ob ein
Ausdruck von einem bestimmten Typ ist, sollten stattdessen die
is_type-Funktionen verwendet
werden.
Beispiel #1 Verschiedene Typen
<?php
$a_bool = true; // Typ bool (Wahrheitswert)
$a_str = "foo"; // Typ string (Zeichenkette)
$a_str2 = 'foo'; // Typ string (Zeichenkette)
$an_int = 12; // Typ int (Ganzzahl)
echo get_debug_type($a_bool), "\n";
echo get_debug_type($a_str), "\n";
// Falls es ein Integer ist, erhöhe ihn um vier
if (is_int($an_int)) {
$an_int += 4;
}
var_dump($an_int);
// Falls $a_bool ein String ist, gib ihn aus
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>
Das oben gezeigte Beispiel erzeugt mit PHP 8 folgende Ausgabe:
Hinweis:
Die Funktion get_debug_type() steht erst seit PHP 8.0.0
zur Verfügung. Davor kann stattdessen die Funktion
gettype() verwendet werden, die jedoch nicht die
kanonischen Typnamen verwendet.