Typ-Juggling und Typumwandlung
Verstehen Sie, wie PHP automatisch zwischen Typen konvertiert und wie Sie manuell umwandeln.
Typ-Juggling und Typumwandlung ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist Type Juggling?
Type Juggling bedeutet, dass PHP den Typ eines Werts automatisch umwandelt, wenn ein Operator oder eine Funktion einen anderen Typ erfordert.
Das ist praktisch, kann aber zu schwer erkennbaren Fehlern führen, wenn Sie die Regeln nicht verstehen.
Type Juggling in der Arithmetik
PHP konvertiert Zeichenfolgen in Zahlen, wenn sie im arithmetischen Kontext verwendet werden:
<?php
echo '5' + 3; // 8 — string '5' becomes int 5
echo '5.5' + 1.5; // 7 — string '5.5' becomes float
echo '5 cats' + 1; // 6 — leading numeric part used, rest ignored
echo 'cats' + 1; // 1 — non-numeric string becomes 0Lockerer Vergleich ==
Der Operator == vergleicht Werte nach dem Type Juggling – das kann zu überraschenden Ergebnissen führen:
<?php
var_dump(0 == 'a'); // true in PHP 7 (both become 0)
// false in PHP 8 (improved rules!)
var_dump('' == false); // true
var_dump('1' == true); // true
var_dump(null == false); // trueStrikter Vergleich ===
Verwenden Sie immer ===, um sowohl Wert als auch Typ zu vergleichen – es findet kein Type Juggling statt:
<?php
var_dump(1 === '1'); // false — different types
var_dump(1 === 1); // true
var_dump(null === false); // false
var_dump(0 === false); // false
// Rule of thumb: prefer === unless you explicitly need type coercionExplizite Typumwandlung
Wandeln Sie einen Wert in einen bestimmten Typ um, indem Sie ihm (type) voranstellen:
<?php
$str = '42.7';
$int = (int) $str; // 42
$float = (float) $str; // 42.7
$bool = (bool) $str; // true
$arr = (array) $str; // ['42.7']
echo $int; // 42
echo $float; // 42.7Funktion settype()
settype() ändert den Typ einer Variablen direkt und gibt true oder false zurück:
<?php
$value = '123';
settype($value, 'integer');
var_dump($value); // int(123)
// Alternative: intval(), floatval(), strval() functions
$n = intval('0xFF', 16); // 255 — parse hex stringSonderfälle bei der Umwandlung von Zeichenfolgen in Zahlen
Wichtige Regeln, wenn PHP Zeichenfolgen in Zahlen umwandelt:
- Führende Leerzeichen werden ignoriert:
' 42 '→ 42 - Nicht numerisches Präfix:
'php8'→ 0 (Hinweis in PHP 8) - Wissenschaftliche Schreibweise:
'1e3'→ 1000.0 - Hexadezimale Zeichenfolgen:
'0x1A'wird in PHP 7+ NICHT automatisch in int umgewandelt
Regeln für die Umwandlung in Boolean
Diese Werte werden in false umgewandelt; alles andere wird zu true:
<?php
$falsy = [false, 0, 0.0, '', '0', [], null];
foreach ($falsy as $v) {
var_dump((bool) $v); // all bool(false)
}
// Careful:
var_dump((bool) '0'); // false — the STRING '0' is falsy!
var_dump((bool) '00'); // true — only exactly '0' is falsyintval() mit Zahlensystemen
intval() akzeptiert einen optionalen Basisparameter zum Parsen numerischer Zeichenfolgen:
<?php
echo intval('0b1010', 2); // 10 — binary
echo intval('077', 8); // 63 — octal
echo intval('1F', 16); // 31 — hexadecimal
echo intval('42'); // 42 — decimal (default base 10)Verbessertes Type Juggling in PHP 8
PHP 8 hat einige inkonsistente Type-Juggling-Verhaltensweisen aus früheren Versionen behoben:
0 == 'foo'ist jetztfalse(war in PHP 7true)- Beim Vergleich von Zahlen mit nicht numerischen Zeichenfolgen wird die Zeichenfolge nicht mehr in 0 umgewandelt
- Dadurch ist PHP 8 sicherer, allerdings kann dadurch älterer Code beeinträchtigt werden, der auf dem früheren Verhalten beruht
Fehler durch Type Juggling vermeiden
Bewährte Vorgehensweisen, um Überraschungen durch Type Juggling zu vermeiden:
<?php
declare(strict_types=1); // enforce types at function boundaries
// Always use === for comparisons
if ($status === 'active') { /* safe */ }
// Cast explicitly before arithmetic
$total = (float) $_POST['price'] * (int) $_POST['qty'];
// Validate with filter_var
$age = filter_var($_POST['age'], FILTER_VALIDATE_INT);
if ($age === false) { /* invalid input */ }Schnelltest
Worauf wird (int) '42abc' in PHP ausgewertet?
Zusammenfassung: Type Juggling
Das haben Sie über die Typbehandlung in PHP gelernt:
- PHP wandelt Typen in Operationen automatisch um – dies wird als Type Juggling bezeichnet
==vergleicht nach dem Type Juggling;===ist strikt (Typ + Wert)- Wandeln Sie Werte explizit mit
(int),(float),(string),(bool)um - Verwenden Sie
intval(),floatval(),strval()als funktionale Alternativen - PHP 8 hat einige Sonderfälle beim Type Juggling verbessert
- Aktivieren Sie
strict_types=1, um Überraschungen in Ihrem Code zu reduzieren
Häufig gestellte Fragen
Ist die Lektion „Typ-Juggling und Typumwandlung“ kostenlos?
Ja — der vollständige Text von „Typ-Juggling und Typumwandlung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Typ-Juggling und Typumwandlung“?
Verstehen Sie, wie PHP automatisch zwischen Typen konvertiert und wie Sie manuell umwandeln. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um PHP Academy zu starten?
Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Typ-Juggling und Typumwandlung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?
Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Variablen in PHP deklarieren
- Übersicht der PHP-Datentypen
- Echo- und Print-Ausgabe
- Typ-Juggling und Typumwandlung