W3docs

gettype()

Die Funktion gettype() ist eine eingebaute PHP-Funktion, die den Datentyp einer Variable zurückgibt. Sie prüft den Typ einer Variable und

Einführung

PHP ist eine dynamisch typisierte Sprache: Der Typ einer Variable wird zur Laufzeit festgelegt und nicht im Voraus deklariert. Die eingebaute Funktion gettype() ermöglicht es, diesen Typ zur Laufzeit zu ermitteln und gibt einen lesbaren string zurück, zum Beispiel "integer" oder "string". Sie ist hilfreich beim Debuggen unerwarteter Werte, beim Verzweigen nach dem Typ einer gemischten Eingabe oder beim Schreiben von Log-Nachrichten, die beschreiben, was tatsächlich empfangen wurde.

Diese Seite behandelt die Syntax der Funktion, die genauen Zeichenketten, die sie zurückgeben kann, die veralteten Typnamen, über die man leicht stolpert, sowie die Frage, wann man gettype() gegenüber den dedizierten is_*-Funktionen bevorzugen sollte.

Syntax

gettype(mixed $value): string

gettype() nimmt ein einziges Argument entgegen, $value — die Variable, deren Typ ermittelt werden soll — und gibt einen string zurück, der diesen Typ benennt. Die Funktion wirft niemals eine Ausnahme und verändert ihr Argument nicht.

Rückgabewerte

gettype() gibt einen aus einer festen Menge von Zeichenketten zurück:

Zurückgegebener stringPHP-Typ
"boolean"bool (true / false)
"integer"int
"double"float (ja, double, nicht "float" — siehe den Hinweis unten)
"string"string
"array"array
"object"beliebige Objektinstanz
"resource"eine offene Ressource (z. B. ein Datei-Handle)
"resource (closed)"eine geschlossene Ressource (PHP 7.2+)
"NULL"der null-Wert
"unknown type"ein Typ, den PHP anderweitig nicht benennen kann

Grundlegendes Beispiel

Beispiel für PHP gettype()

php— editable, runs on the server

Hier werden vier Variablen mit unterschiedlichen Typen definiert und gettype() aufgerufen, um jede einzelne zu benennen. Die Ausgabe ist string, integer, boolean und array — ein Typname pro Zeile.

Die Besonderheit mit "double" und "integer"

Die von gettype() zurückgegebenen Zeichenketten stimmen nicht mit den Schlüsselwörtern überein, die in Typdeklarationen verwendet werden. Ein float wird als "double" gemeldet und ein int als "integer":

<?php
echo gettype(3.14), "\n"; // double  (NOT "float")
echo gettype(7),    "\n"; // integer (NOT "int")
echo gettype(null), "\n"; // NULL    (uppercase)
?>

Aus diesem Grund schlägt ein Vergleich der gettype()-Ausgabe mit "float" oder "int" lautlos fehl. Wenn nur eine Ja/Nein-Antwort für einen einzelnen Typ benötigt wird, sollten die dedizierten Funktionen bevorzugt werden — is_int(), is_float(), is_string(), is_array() und ähnliche — die sowohl schneller sind als auch die Namensüberraschung vermeiden:

<?php
$value = 7;

// Brittle: depends on the legacy name
if (gettype($value) === "integer") { /* ... */ }

// Clearer and faster:
if (is_int($value)) { /* ... */ }
?>

Ab PHP 8.0 ist get_debug_type() die moderne Alternative: Sie gibt die kanonischen Namen zurück (int, float, bool) und für Objekte den tatsächlichen Klassenname anstatt nur "object".

Wann gettype() verwendet werden sollte

  • Debugging und Logging — den Typ eines Wertes zusammen mit seinem Inhalt ausgeben, um einen Fehler aufzuspüren.
  • Generische Verarbeitung gemischter Eingaben — Verzweigen in einem switch, wenn eine Funktion legitimerweise mehrere Typen akzeptiert.
  • Schnelle Prüfung — eine einmalige Überprüfung in der Konsole, ohne auf moderne Namensgebung angewiesen zu sein.

Für vollständige strukturierte Ausgaben eines Wertes (Typ und Inhalt, rekursiv) sollten var_dump() oder print_r() verwendet werden. Um den Typ einer Variable zu ändern statt ihn zu lesen, siehe settype(). Für einen umfassenderen Überblick über das Typsystem von PHP, lesen Sie PHP Data Types.

Fazit

gettype() liefert eine schnelle, zeichenkettenbasierte Antwort auf die Frage „Welchen Typ hat dieser Wert?" — nützlich für Debugging, Logging und die Verarbeitung gemischter Eingaben. Die veralteten Namen ("double" für Floats, "integer" für Ints) sollten dabei stets bedacht werden, und für präzise, zukunftssichere Prüfungen empfehlen sich die is_*-Funktionen oder get_debug_type().

Übungen

Übung
Was ist der Zweck der Funktion 'gettype()' in PHP?
Was ist der Zweck der Funktion 'gettype()' in PHP?
Was this page helpful?