1. Allgemeines
PHP ist toleranter als andere Programmiersprachen und verlangt nicht, dass für eine Variable ein fester Datentyp angegeben wird. Es gibt, genau genommen, nicht einmal die Möglichkeit dies zu tun. Dennoch hat der Wert jeder Variable einen Datentyp, welcher Einfluss auf die Verarbeitung dieses Wertes hat. Dass Addieren von Integern (ganzen Zahlen) verhält sich zum Beispiel anders als das Addieren von Strings (Zeichenketten).
2. gettype()
Um nun herauszufinden, welchen Datentyp der Wert einer Variablen hat kann gettype($var) verwendet werden. Diese Funktion erzeugt eine der nachfolgenden String-Rückgaben, die den bekannten Datentypen in PHP entsprechen: 'boolean', 'integer', 'double', 'string', 'array', 'object', 'resource', 'NULL', 'unknown type'. Floats werden durch 'double' repräsentiert.
<?php function eineFunktion($par) { echo("An diese Funktion wurde ein Parameter mit Datentyp ".gettype($par)." uebergeben.\n"); } eineFunktion(1000); eineFunktion(true); eineFunktion("test"); ?>
An diese Funktion wurde ein Parameter mit Datentyp integer uebergeben. An diese Funktion wurde ein Parameter mit Datentyp boolean uebergeben. An diese Funktion wurde ein Parameter mit Datentyp string uebergeben.
3. is_*-Funktionen
Die Funktion gettype() sollte nur verwendet werden, um den Datentyp einer Variablen auszugeben. Das Testen auf spezielle Datentypen ist — mit dieser Funktion — nicht empfehlenswert, da sich die Rückgaben irgendwann einmal verändert können. Stattdessen sollten die Funktionen is_boolean($var), is_string($var), is_float($var), is_array($var), is_object($var), is_resource($var) und is_null($var) verwendet werden.
Beispiel:
<?php function quadriere($zahl) { // Quadriert werden sollen durch diese Funktion nur Integer oder Floats // bei allen anderen Datentypen wird ein Fehler geworfen. if (!is_int($zahl) && !is_float($zahl)) { throw new Exception('Ungueltiger Parameter uebergeben. ' .'Erwartet wurde Integer, gegeben wurde '.gettype($zahl).'.'); } return ($zahl*$zahl); } // quadrieren mit 2 als Zahl var_dump( quadriere(2) ); // quadrieren mit 2 als String, erzeugt einen Fehler try { var_dump( quadriere('2') ); } catch (Exception $e) { echo($e->getMessage()); } ?>
int(4) Ungueltiger Parameter uebergeben. Erwartet wurde Integer, gegeben wurde string.
Kommentare (5)
Von neu nach altWir bitten um ihr Verständnis.