| |
| * Link führt ins Internet |
|
| |
Explizite Typumwandlung
Typ-Umwandlung in PHP funktioniert vielfach wie in C. Der Name des gewünsch-ten 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 Typ-Umwandlung 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 String-Variablen 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 String-Variable in ein Objekt gewandelt wird, wird die Variable zu einem Attribut des Objekts; der Eigenschafts-Name 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 stellen wir Ihnen sinnvolle mögliche Kombinationen vor.
| Zieltyp | Sinnvolle Quelltypen | Unwandlungsprinzip |
| integer | double | Dezimale werden abgeschnitten (keine Rundung) |
| int | string | Wird keine Zahl erkannt, wird 0 zurückgegeben |
| double | integer | unverändert
| | real | 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 oder 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 mit Hilfe einer Bedingung zu reagieren. |
Beispiel
<?php
$preis = 9.99;
// Aushabe (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;
// Aushabe (9)
echo intval($preis);
?>
|
|
|
|
|
|
|
|