Variablen, Datentypen und Arrays verständlich erklärt
Drei Begriffe, die in jedem PHP-Projekt vorkommen. Dieser Text erklärt sie an lauffähigen Beispielen und zeigt die Stellen, an denen sich auch erfahrene Entwickler noch vertun.
Das lernen Sie
Variablen: ein Name für einen Wert
Eine Variable ist ein Name, unter dem ein Wert abgelegt wird. In PHP beginnt jeder Variablenname mit einem Dollarzeichen. Einen Typ muss man nicht angeben — PHP leitet ihn aus dem Wert ab.
$anzahl = 3; // int
$preis = 19.99; // float
$name = 'Auftrag'; // string
$offen = true; // bool
$bearbeiter = null; // null
echo gettype($anzahl); // integer
echo gettype($preis); // doubleDass man den Typ nicht angeben muss, heißt nicht, dass man ihn nicht angeben sollte. In Funktionssignaturen und Eigenschaften sind Typangaben seit Jahren üblich und fangen Fehler ab, bevor sie Daten erreichen.
Die Datentypen, die im Alltag vorkommen
Die Unterscheidung zwischen Zahl und Text ist keine Formsache. Eine Postleitzahl als Zahl zu speichern verliert die führende Null, und eine Artikelnummer als Zahl verliert sie ebenso. Bezeichner, bei denen führende Nullen oder das Format zählen (Postleitzahl, Artikelnummer, Telefonnummer), gehören in einen Text.
Arrays: eine Sorte für zwei Aufgaben
Andere Sprachen trennen Liste und Zuordnung. PHP hat nur ein Array, das beides kann: Es ist immer eine geordnete Abbildung von Schlüsseln auf Werte. Ohne eigene Schlüssel vergibt PHP fortlaufende Zahlen ab 0.
// Liste — Schluessel 0, 1, 2 entstehen automatisch
$farben = ['rot', 'gruen', 'blau'];
echo $farben[1]; // gruen
// Zuordnung — eigene Schluessel
$auftrag = [
'nummer' => 10244,
'kunde' => 'Beispiel GmbH',
'offen' => true,
];
echo $auftrag['kunde']; // Beispiel GmbH
// Anhaengen
$farben[] = 'gelb';
echo count($farben); // 4Verschachtelte Arrays sind der Normalfall, sobald es um echte Daten geht: eine Liste von Aufträgen ist ein Array, dessen Werte wieder Arrays sind. Ab einer gewissen Tiefe lohnt sich stattdessen eine Klasse — sie sagt im Namen, was sie enthält, und ein Tippfehler im Schlüssel fällt sofort auf.
Ein Beispiel aus der Praxis
Drei Vergleichsfallen
// 1. Lose Gleichheit vergleicht nach Umwandlung
var_dump(0 == 'abc'); // false (seit PHP 8)
var_dump('1' == '01'); // true — beide werden Zahlen
var_dump('1' === '01'); // false — Typ und Wert
// 2. Kommazahlen sind nicht exakt
var_dump(0.1 + 0.2 == 0.3); // false
// 3. null, 0 und '' sind alle "leer"
var_dump(empty('0')); // true — ueberrascht vieleDie Lehre aus allen dreien: Vergleichen Sie Skalare (Zahlen, Texte, Wahrheitswerte) mit drei Gleichheitszeichen; für Objekte prüft === nur, ob es dasselbe Objekt ist, hier vergleicht man gezielt die Werte oder verwendet eine Methode wie equals()., prüfen Sie auf null mit `$wert === null` statt mit `empty()`, und Rechnen Sie Geldbeträge nicht mit Kommazahlen, sondern in ganzen Cent oder mit einer Festkomma-Bibliothek (z. B. BCMath oder eine Geldbetrags-Klasse), wenn auch Bruchteile von Cent vorkommen..
Häufige Missverständnisse
Weiterführende Quellen
- PHP-Handbuch: Typen die offizielle Übersicht aller Datentypen
- PHP-Handbuch: Arrays Aufbau, Schlüssel und Verhalten
- PHP-Handbuch: Vergleichsoperatoren die Tabelle hinter den Fallen oben
Über den Autor
Fabian Lücker ist geschäftsführender Gesellschafter der PHP-Schmiede KG in Rheine und seit 2007 in der Softwareentwicklung tätig. Er verantwortet Entwicklung und Konzeption und schreibt hier über Entscheidungen, die in echten Projekten anfallen.