Explizite Typumwandlung
Typumwandlung in PHP funktioniert oft wie in C. Der Name des gewünschten Typs wird vor der umzuwandelnden Variablen in Klammern gesetzt, dies wird auch als Cast-Operation bezeichnet.
Beispiel
<?php
// Integer
$zahl = 100;
// Float
$zahl = (float) $zahl;
// Ausgabe – float(100)
echo var_dump($zahl);
?>
Folgende Umwandlungen sind möglich:
- (int), (integer) – nach integer
- (bool), (boolean) – nach boolean
- (float), (double), (real) – nach float
- (string) – nach string
- (array) – nach array
- (object) – Wandlung zum Objekt
Anstatt eine Variable in einen String umzuwandeln, können Sie die Variable auch in doppelte Anführungszeichen einschließen.
Beachten Sie, dass Tabulatoren und Leerzeichen innerhalb der Klammern erlaubt sind. Deshalb sind die folgenden Beispiele identisch:
$zahl = (int) $zahl;
$zahl = ( int ) $zahl;
Es ist nicht immer offenkundig, was bei der Typumwandlung geschieht. Sollten Sie eine Umwandlung eines Arrays zu einem String vornehmen oder erzwingen, ist das Ergebnis das Wort »Array«. Wenn Sie eine Umwandlung eines Objekts zu einem String vornehmen oder erzwingen, ist das Ergebnis das Wort »Objekt«.
Bei der Umwandlung einer skalaren oder Stringvariablen zu einem Array wird die Variable das erste Element des Arrays:
<?php
$vorname = 'Caroline';
$personen = (array) $vorname;
// Ausgabe – Caroline
echo $personen[0];
?>
Sobald eine skalare oder Stringvariable in ein Objekt gewandelt wird, wird die Variable zu einem Attribut des Objekts; der Eigenschaftsname wird 'scalar':
<?php
$vorname = 'Caroline';
$obj = (object) $vorname;
// Ausgabe – Caroline
echo $obj->scalar;
?>
Bei der Umwandlung sollten Sie berücksichtigen, dass nicht sämtliche Richtungen sinnvoll sind. In der folgenden Tabelle stelle ich Ihnen sinnvolle mögliche Kombinationen vor.
Zieltyp | Sinnvolle Quelltypen | Unwandlungsprinzip | integer
int | double | Dezimale werden abgeschnitten (keine Rundung). | string | Wird keine Zahl erkannt, wird 0 zurückgegeben. | double
real | integer | unverändert | string | Wird keine Zahl erkannt, wird 0 zurückgegeben. | string | integer | Gibt die Zahl als Zeichenkette zurück. | double | Gibt die Zahl als Zeichenkette zurück. | array | object | Wird direkt umgewandelt. | integer | Es entsteht ein Array mit einem Element vom Ursprungstyp. | string | Es entsteht ein Array mit einem Element vom Ursprungstyp. | double | Es entsteht ein Array mit einem Element vom Ursprungstyp. | object | array | Wird direkt umgewandelt. | integer | Es entsteht ein Objekt mit einer Eigenschaft, die durch die Variable repräsentiert wird. | string | Es entsteht ein Objekt mit einer Eigenschaft, die durch die Variable repräsentiert wird. | double | Es entsteht ein Objekt mit einer Eigenschaft, die durch die Variable repräsentiert wird. |
Zeichenkettenkonvertierung
Bei der Umwandlung von Zeichenketten wendet PHP bestimmte Regeln an. Mit deren Kenntnis können Sie das Ergebnis voraussagen und von der Umwandlung sicher Gebrauch machen:
- integer entsteht, wenn die Zeichenkette mit einem gültigen numerischen Zeichen (Ziffer, Plus oder Minus) beginnt und dahinter nicht die Zeichen . , e oder E folgen. Ist der erste Teil der Zeichenkette ein gültiger Ausdruck, wird der Rest ignoriert.
- float (double) entsteht, wenn die Zeichenkette mit einem gültigen numerischen Zeichen (Ziffer, Plus oder Minus) beginnt und dahinter die Zeichen . , e oder E folgen. Ist der erste Teil der Zeichenkette ein gültiger Ausdruck, wird der Rest ignoriert.
Hinweis: Die Zeichen e und E dienen der Darstellung von Exponenten. Die Schreibweise Enn steht für x10nn. Generell dient der Punkt . als Dezimaltrennzeichen. Sie müssen dies bei Zuweisungen von Variablen berücksichtigen. Zur Ausgabe lassen sich Zahlen mit der Funktion number_format in die benötigte Form bringen (deutsche Schreibweise mit Komma).
Umwandlungsfunktion
Neben der Angabe des Datentyps als cast-Ausdruck kann auch die Funktion settype() eingesetzt werden. In manchen Ausdrücken wird eine Funktion erwartet, oft dient der Einsatz jedoch lediglich der besseren Lesbarkeit.
settype (string var, string type)
Der Typ der Variablen var wird festgelegt als type. Mögliche Werte für type sind:
- "integer"
- "double"
- "string"
- "array"
- "object"
Beispiel
<?php
$preis = 9.99;
settype($preis,"integer");
// Ausgabe (9)
echo $preis
?>
Beispiel
<?php
$preis = 9.99;
settype($preis,"object");
// Ausgabe Object id #1
echo $preis;
// Ausgabe (9.99)
echo $preis->scalar;
?>
Hinweis: Bei erfolgreicher Umwandlung liefert settype() TRUE, sonst FALSE. So haben Sie die Möglichkeit, auf eine fehlerhafte Umwandlung mithilfe einer Bedingung zu reagieren.
Beispiel
<?php
$preis = 9.99;
// Ausgabe (9)
if (settype($preis,"integer") == 1) {
echo $preis;
} else {
echo "Fehler!";
}
?>
Sollte Ihnen settype() zu umständlich sein, können Sie auch die abgeleiteten val-Funktionen verwenden:
- intval(string var) – Diese Funktion wandelt in integer um.
- doubleval (string var) – Diese Funktion wandelt in double um.
- strval(string var) – Diese Funktion wandelt in string um.
Beispiel
<?php
$preis = 9.99;
// Ausgabe (9)
echo intval($preis);
?>
|