4.3.10 Schwache Typisierung

Achtung: PHP ist eine "schwach typisierte Sprache". Was dies bedeutet, soll folgendes Beispiel verdeutlichen:

1
2
3
4
5
6
7
<?php
$varString = "111";  // dies ist ein String
$varInt    = 222;    // dies ist eine Integer-Zahl

// wir addieren einen String mit einer Zahl
$sum = $varString + $varInt;
echo $sum;

Ausgabe:
333

Stark typisierte Sprachen wie z.B. C oder Java würden einen Fehler ausgeben. Aber PHP wandelt den String in eine Zahl um und addiert. Nur deshalb mussten wir eben beim Vergleich der Arrays auch === verwenden, um Typ und Wert zu vergleichen.

Beim Vergleich mit == werden nur die Werte verglichen und es erfolgt eine automatische Konvertierung, die normalerweise nicht gewünscht ist.

In PHP wird die automatische Umwandlung der Typen als "Type Juggling" bezeichnet.

Anmerkung

Man kann ab PHP 7 nun den PHP-Interpreter anweisen Datentypen strikt zu verwenden. Die schwache Typisierung wird aber an dieser Stelle nicht aufgehoben, wie folgendes Beispiel zeigt:

1
2
3
4
5
6
7
8
<?php
<?php declare(strict_types=1);
$varString = (string) "111";  // dies ist ein String
$varInt    = (int)     222;   // dies ist eine Integer-Zahl

// wir addieren einen String mit einer Zahl
$sum = (string)$varString + (int)$varInt;
echo $sum;

Ausgabe:
333