PHP-Datentypen verstehen
Lerne PHPs acht Datentypen — int, float, bool, string, array, object, null und resource — mit Beispielen, Typprüfung und Casting-Regeln.
Ein Datentyp beschreibt, welche Art von Wert eine Variable enthält und welche Operationen darauf gültig sind. PHP ist dynamisch typisiert: Man deklariert keinen Typ, sondern weist einfach einen Wert zu, und PHP leitet den Typ daraus ab. Dieselbe Variable kann sogar während eines Skripts den Typ wechseln. Das Verständnis der acht eingebauten Typen — und wie PHP zwischen ihnen konvertiert — ist die Grundlage für vorhersehbaren PHP-Code.
Dieses Kapitel behandelt alle PHP-Typen, wie man den Typ eines Werts zur Laufzeit prüft und die Typumwandlungsregeln, über die die meisten Einsteiger stolpern.
Die acht PHP-Datentypen
PHP hat acht primitive Typen, die in drei Familien gruppiert sind:
| Familie | Typen |
|---|---|
| Skalar (einzelner Wert) | int, float, bool, string |
| Zusammengesetzt (Sammlungen) | array, object |
| Speziell | null, resource |
Mit der Funktion gettype() lässt sich abfragen, welchen Typ ein Wert hat, oder mit Funktionen wie is_int(), is_string() oder is_null() ein bestimmter Typ prüfen.
<?php
$value = 42;
echo gettype($value); // integer
$value = "now I'm a string";
echo PHP_EOL . gettype($value); // stringSkalare Typen
Skalare Typen halten einen einzelnen Wert.
Integer
Ein Integer ist eine ganze Zahl, positiv oder negativ, ohne Dezimalpunkt. Mehr dazu unter PHP-Zahlen.
<?php
$num = 42; // decimal
$negative = -7;
$hex = 0x1A; // hexadecimal (26)
$binary = 0b101; // binary (5)
echo "$num $negative $hex $binary"; // 42 -7 26 5Float
Ein Float (Gleitkommazahl) hält eine Zahl mit Dezimalpunkt oder Exponent. Beachte, dass Floats Näherungswerte sind — vergleiche sie daher nie auf exakte Gleichheit.
<?php
$price = 12.99;
$scientific = 1.2e3; // 1200
echo $price + $scientific; // 1212.99Boolean
Ein boolean hält nur true oder false. Es ist der Typ, der durch Vergleiche erzeugt und von Bedingungen wie if verwendet wird.
<?php
$isActive = true;
$hasError = false;
var_dump($isActive); // bool(true)String
Ein string ist eine Folge von Zeichen. Doppelt angeführte Strings interpolieren Variablen; einfach angeführte nicht. Siehe PHP-Strings für die vollständige Erklärung.
<?php
$name = "John";
echo "Hello, $name!"; // Hello, John!
echo PHP_EOL . 'Hello, $name!'; // Hello, $name! (no interpolation)Zusammengesetzte Typen
Zusammengesetzte Typen gruppieren mehrere Werte.
Array
Ein Array speichert eine geordnete Zuordnung von Schlüssel/Wert-Paaren in einer einzigen Variable. Verwende die kurze []-Syntax in modernem PHP.
<?php
$fruits = ["apple", "banana", "cherry"];
$prices = ["apple" => 1.20, "banana" => 0.50]; // associative
echo $fruits[1]; // banana
echo PHP_EOL . $prices["apple"]; // 1.2Object
Ein Objekt ist eine Instanz einer Klasse — es bündelt Daten (Eigenschaften) mit Verhalten (Methoden). Erstelle eines mit dem Schlüsselwort new.
<?php
class Person {
public function __construct(public string $name) {}
public function greet(): string {
return "Hi, I'm {$this->name}";
}
}
$person = new Person("Ada");
echo $person->greet(); // Hi, I'm AdaSpezielle Typen
NULL
null repräsentiert eine Variable ohne Wert. Eine Variable ist null, wenn ihr der Konstante null zugewiesen wurde, sie noch nicht gesetzt wurde oder unset() darauf angewendet wurde. Prüfe dies mit is_null() oder === null.
<?php
$age = null;
var_dump(is_null($age)); // bool(true)Resource
Eine Resource ist eine spezielle Variable, die einen Verweis auf ein externes Objekt enthält, z. B. eine geöffnete Datei oder eine Datenbankverbindung. Resources werden nicht direkt erstellt — Funktionen wie fopen() geben sie zurück. Resources werden automatisch freigegeben, wenn sie nicht mehr verwendet werden.
Typumwandlung und Casting
Da PHP dynamisch typisiert ist, konvertiert es Typen automatisch ("juggles"), wenn eine Operation es erfordert. Zum Beispiel wird ein numerischer string bei arithmetischen Operationen zu einer Zahl:
<?php
$result = "5" + 3; // the string "5" is converted to int 5
echo $result; // 8Ein string, der nur mit Ziffern beginnt (wie "5 apples"), erzeugt in modernem PHP eine Warnung — verwende daher lieber einen expliziten Cast.
Wenn explizite Kontrolle benötigt wird, cast einen Wert, indem der Zieltyp in Klammern geschrieben wird:
<?php
$text = "12.99";
$asFloat = (float) $text; // 12.99 as a float
$asInt = (int) $text; // 12 (truncated)
var_dump($asInt); // int(12)Vorsicht bei Wahrheitswerten: Wenn zu bool gecastet, sind die Werte 0, 0.0, "", "0", [] und null alle false; fast alles andere ist true.
<?php
var_dump((bool) "0"); // bool(false)
var_dump((bool) "0.0"); // bool(true) — surprising!Wann welcher Typ verwendet wird
- Verwende int/float für Mengen und Berechnungen; nutze die Hilfsfunktionen unter PHP-Zahlen für die Formatierung.
- Verwende string für Text und Bezeichner.
- Verwende bool für Flags und Ergebnisse von Vergleichen.
- Verwende array für Listen oder Zuordnungen verwandter Werte.
- Verwende object, um reale Entitäten mit Daten und Verhalten zu modellieren.
- Verwende null, um "noch kein Wert" zu signalisieren, anstatt eines Platzhalters wie
0oder"".
Zusammenfassung
PHP leitet den Typ eines Werts automatisch aus der Zuweisung ab und unterstützt acht Typen aus den Familien skalar, zusammengesetzt und speziell. Typen lassen sich mit gettype() und den is_*-Funktionen prüfen, Konvertierungen durch explizite Casts steuern. Das Beherrschen der Typumwandlung — besonders der bool- und numerischen String-Regeln — verhindert eine ganze Klasse subtiler Fehler. Schau dir als Nächstes an, wie Typen mit Operatoren interagieren und wie sie in Variablen gespeichert werden.