Wie man einen String in eine Zahl in PHP umwandelt: Schritt-für-Schritt-Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum wollen sich Strings nicht addieren?

\n\n

Jeder Entwickler, der mindestens einmal in PHP programmiert hat, ist auf die Situation gestoßen, in der statt der erwarteten Zahl ein seltsames Ergebnis herauskommt. Sie versuchen, zwei Variablen zu addieren, die aus einem Formular oder einer Datenbank stammen, und PHP gibt so etwas wie 1520 statt 35 aus. Kommt Ihnen bekannt vor? Das ist ein klassisches Problem: String in Zahl in PHP umwandeln.

\n\n

PHP ist eine Sprache mit dynamischer Typisierung. Das ist gleichzeitig ein Segen und ein Fluch. Einerseits versucht es zu erraten, was Sie gemeint haben, und konvertiert Typen automatisch. Andererseits führen solche "Rateversuche" oft zu schwer auffindbaren Fehlern. Heute besprechen wir alle Methoden zur Umwandlung eines Strings in eine Zahl in PHP – von einfach bis fortgeschritten – und lernen, wie man es richtig macht.

\n\n

Kurze Antwort: 4 Methoden in 30 Sekunden

\n\n

Wenn Sie eine schnelle Lösung brauchen – hier ist ein Spickzettel. Aber schließen Sie den Artikel noch nicht: Jede Methode hat ihre eigenen Besonderheiten und Fallstricke.

\n\n
<?php\n// Methode 1: Explizite Typumwandlung\n$number = (int) "42";          // int(42)\n$float  = (float) "3.14";     // float(3.14)\n\n// Methode 2: Funktion intval()\n$number = intval("42");       // int(42)\n\n// Methode 3: Funktion floatval() / doubleval()\n$float  = floatval("3.14");   // float(3.14)\n\n// Methode 4: Mit settype()\n$str = "42";\nsettype($str, "integer");     // jetzt ist $str = int(42)\n?>
\n\n

Alle vier Methoden funktionieren, verhalten sich aber in Grenzfällen unterschiedlich. Lassen Sie uns jede im Detail besprechen.

\n\n

1. Explizite Typumwandlung: (int) und (float)

\n\n

Der schnellste und offensichtlichste Weg, einen String in eine Zahl in PHP umzuwandeln, ist die Verwendung von Typumwandlungsoperatoren. Sie wirken wie ein "erzwungenes Umschalten" des Variablentyps.

\n\n

Beispiele mit (int)

\n\n
<?php\necho (int) "42";           // 42\necho (int) "3.99";         // 3 (Nachkommastelle wird abgeschnitten!)\necho (int) "42 Äpfel";     // 42 (Zahl am Anfang)\necho (int) "Apfel 42";     // 0 (kann Zahl nicht erkennen)\necho (int) "";             // 0\necho (int) null;           // 0\n?>
\n\n

Wichtig: PHP versucht, eine Zahl am Anfang des Strings zu finden. Wenn der String mit Buchstaben beginnt, ist das Ergebnis 0. Dieses Verhalten führt oft zu Fehlern, besonders bei der Arbeit mit Benutzereingaben.

\n\n

Beispiele mit (float)

\n\n
<?php\necho (float) "3.14";       // 3.14\necho (float) "3,14";       // 3.0 (Komma funktioniert nicht!)\necho (float) "2.99 Euro";  // 2.99\necho (float) "abc";        // 0\n?>
\n\n

Lifehack: Denken Sie daran, dass PHP den Punkt als Dezimaltrennzeichen verwendet. Wenn Benutzer Zahlen mit Komma eingeben (wie in Deutschland üblich), müssen Sie zuerst das Komma mit str_replace(',', '.', $str) durch einen Punkt ersetzen.

\n\n

2. Funktionen intval() und floatval()

\n\n

Diese Funktionen sind eine "intelligentere" Version der expliziten Umwandlung. Sie tun dasselbe, erlauben aber, das Zahlensystem für intval() anzugeben.

\n\n
<?php\n// intval() — Umwandlung in eine Ganzzahl\necho intval("42");            // 42\necho intval("1010", 2);       // 10 (Binärsystem!)\necho intval("FF", 16);        // 255 (Hexadezimalsystem)\necho intval("42.99");         // 42 (Nachkommastelle wird abgeschnitten)\n\n// floatval() — Umwandlung in eine Gleitkommazahl\necho floatval("3.14");        // 3.14\necho floatval("2.71828");     // 2.71828\n?>
\n\n

Wann verwenden: intval() ist unverzichtbar, wenn Sie mit Zahlen in verschiedenen Zahlensystemen arbeiten (z. B. beim Parsen von HEX-Farbcodes). Für normale Zahlen gibt es praktisch keinen Unterschied zu (int).

\n\n

3. Funktion settype(): Umwandlung an Ort und Stelle

\n\n

Im Gegensatz zu den vorherigen Methoden gibt settype() keinen neuen Wert zurück, sondern

Blogs

Buchempfehlungen