Typkonvertierung

Geschätzte Lektüre: 6 Minuten 340 Ansichten

Was ist Typkonvertierung

Typkonvertierung (auch Type Casting genannt) ist die explizite Umwandlung eines Wertes von einem Datentyp in einen anderen.

Explizite Typkonvertierung (Type Casting)

In PHP können Sie Datentypen explizit mit folgenden Syntax umwandeln:

$variable = (zieltyp) $ursprüngliche_variable;

Beispiele:

// String zu Integer
$string = "123";
$integer = (int) $string; // Ergebnis: 123 (Integer)

// Float zu Integer
$float = 3.14;
$integer = (int) $float; // Ergebnis: 3 (Integer, Nachkommastellen werden abgeschnitten)

// Integer zu String
$integer = 42;
$string = (string) $integer; // Ergebnis: "42" (String)

// Wert zu Boolean
$value = 1;
$boolean = (bool) $value; // Ergebnis: true (Boolean)

Mögliche Casts in PHP

  • (int) oder (integer) – Umwandlung in Integer
  • (bool) oder (boolean) – Umwandlung in Boolean
  • (float) oder (double) – Umwandlung in Float
  • (string) – Umwandlung in String
  • (array) – Umwandlung in Array
  • (object) – Umwandlung in Objekt
  • (unset) – Umwandlung in NULL (veraltet seit PHP 7.2)

Was ist Type Juggling?

Type Juggling (auch implizite Typkonvertierung genannt) ist die automatische Umwandlung von Datentypen durch PHP, wenn es im Kontext notwendig ist. PHP ist eine schwach typisierte Sprache, was bedeutet, dass der Interpreter versucht, Typen automatisch zu konvertieren, wenn es für eine Operation erforderlich ist.

Beispiele für Type Juggling

// Integer und String Addition
$summe = "5" + 2; // Ergebnis: 7 (Integer)
// PHP wandelt den String "5" in Integer 5 um

// String und Boolean Vergleich
if ("1" == true) {
    echo "Gleich"; // Wird ausgegeben, weil "1" zu true konvertiert wird
}

// String Concatenation mit Zahlen
$result = "Die Antwort ist: " . 42; // "Die Antwort ist: 42"
// Die Zahl 42 wird in einen String umgewandelt

Wichtige Regeln für Type Juggling

• Mathematische Operationen: Strings, die Zahlen enthalten, werden in Zahlen umgewandelt

$result = "10" * "2.5"; // Ergebnis: 25 (Float)

• Vergleiche mit ==: PHP versucht Typen anzugleichen

"100" == 100; // true
0 == false; // true
"" == false; // true

• Strikte Vergleiche mit ===: Kein Type Juggling, Typ und Wert müssen übereinstimmen

"100" === 100; // false
0 === false; // false

• String Concatenation mit .: Andere Typen werden zu Strings umgewandelt

$output = "Wert: " . 5; // "Wert: 5"

Besonderheiten und Fallstricke

String zu Number Konvertierung

Wenn PHP einen String in eine Zahl umwandelt:
• Es wird der numerische Wert vom Anfang des Strings genommen
• Wenn der String nicht mit einer gültigen Zahl beginnt, wird er zu 0

Beispiele:

$val = "10px" + 5; // 15 (PHP liest die 10)
$val = "px10" + 5; // 5 (String beginnt nicht mit Zahl, wird zu 0)
$val = "3.14abc" * 2; // 6.28

Boolean Konvertierung

Folgende Werte werden zu false konvertiert:
• der Boolean false selbst
• der Integer 0
• der Float 0.0
• der leere String „“ und der String „0“
• ein leeres Array
• NULL

Alle anderen Werte werden zu true.

Array Konvertierung

$var = (array) "Hallo"; // wird zu array(0 => "Hallo")
$var = (array) 5; // wird zu array(0 => 5)
$var = (array) null; // wird zu leeres array()

Objekt Konvertierung

$var = (object) "Hallo"; 
// wird zu stdClass Object ( [scalar] => "Hallo" )

$var = (object) array('a' => 'b');
// wird zu stdClass Object ( [a] => 'b' )

Best Practices

Strikte Vergleiche verwenden: === und !== statt == und != um unerwartetes Type Juggling zu vermeiden

if ($input === "123") { // besser als ==
    // ...
}

Explizite Konvertierung: Wenn Sie einen bestimmten Typ benötigen, konvertieren Sie explizit

$age = (int) $_POST['age'];

Type-Hinting in Funktionen: Verwenden Sie Type-Hints für Parameter und Rückgabewerte

function addNumbers(int $a, int $b): int {
    return $a + $b;
}

Funktionen für Typüberprüfung: Nutzen Sie Funktionen wie is_int(), is_string() etc.

if (is_numeric($input)) {
    $value = (float) $input;
}

Zusammenfassung

  • Typkonvertierung (Type Casting): Explizite Umwandlung von einem Typ in einen anderen durch den Programmierer
  • Type Juggling: Implizite, automatische Typumwandlung durch PHP
  • PHP ist schwach typisiert, was Flexibilität bietet, aber auch zu unerwarteten Ergebnissen führen kann
  • Strikte Vergleiche (===) vermeiden viele Probleme mit Type Juggling
  • Explizite Konvertierung und Type-Hinting machen Code klarer und weniger fehleranfällig
Dieses Dokument teilen

Typkonvertierung

Oder Link kopieren

INHALT

Abonnieren

×
Cancel