Typen-Tricks

PHP erfordert ( bzw . unterstützt ) keine explizite Typ-Definitionen bei der Deklaration von Variablen ; der Typ einer Variablen wird durch den Zusammenhang bestimmt in dem die Variable benutzt wird . Das bedeutet , dass bei der Zuweisung einer Zeichenkette / eines Strings zu einer Variablen var diese Variable var zum Typ String wird . Sollten Sie dananch der Variablen var einen Integer-Wert zuweisen , wird sie zu einem Integer-Typ .

Ein Beispiel für die automatische Typ-Konvertierung von PHP ist der Plus-Operator ' + ' . Ist einer der zu addierenden Werte vom Typ float , werden alle Werte als float-Typ gbehandelt . Auch das Ergebnis der Addition wird vom Typ float sein . Andernfalls werden die Werte als integer -Typen angesehen und das Ergebnis wird ebenfalls vom Typ Integer sein . Beachten Sie , dass hierdurch NICHT der Typ der Operanden selbst beeinflusst wird ; der Unterschied liegt einzig und allein in der Auswertung dieser Operanden .

 
$foo

 
=

 
"

 
0"

 
;

 
/

 
/

 
$foo

 
ist

 
vom

 
Typ

 
String

 
(ASCII

 
48

 
)

 
$foo

 
+=

 
2

 
;

 
/

 
/

 
$foo

 
ist

 
jetzt

 
vom

 
Typ

 
Integer

 
(2

 
)

 
$foo

 
=

 
$foo

 
+

 
1.3

 
;

 
/

 
/

 
$foo

 
ist

 
nun

 
vom

 
Typ

 
float

 
(3.3

 
)

 
$foo

 
=

 
5

 
+

 
"10

 
Sehr

 
kleine

 
Ferkel"

 
;

 
/

 
/

 
$foo

 
ist

 
vom

 
Typ

 
Integer

 
(15

 
)

 
$foo

 
=

 
5

 
+

 
"10

 
Kleine

 
Schweine"

 
;

 
/

 
/

 
$foo

 
ist

 
vom

 
Typ

 
Integer

 
(15

 
)





Wenn Ihnen die beiden letzten Beispiele merkwürdig erscheinen , beachten Sie die String-Umwandlung .

Wenn Sie die Auswertung einer Variablen als einen speziellen Typ erzwingen wollen , beachten sie den Abschnitt in Typ-Umwandlung . Wollen Sie den Typ einer Variable ändern , schauen Sie bei settype( ) nach .

Um die Beispiele dieses Kapitels auszuprobieren , können Sie die Funktion var_dump( ) verwenden .

Anmerkung : Das Verhalten einer automatischen Umwandlung zum Typ Array ist zur Zeit nicht definiert .

 
$a

 
=

 
"

 
1"

 
;

 
/

 
/

 
$a

 
ist

 
ein

 
String

 
$a[0

 
]

 
=

 
"f"

 
;

 
/

 
/

 
Was

 
ist

 
mit

 
den

 
String

 
offsets

 
?




 
Was

 
passiert

 
?





Weil PHP die Indizierung innerhalb von Strings mittels der gleichen Syntax wie bei der Array-Indizierung unterstützt , führt das o.a . Beispiel zu einem Problem : Soll $a zu einem Array werden , dessen erstes Element ein " f " ist oder soll "f " das erste Zeichen des Strings $a werden ?

Aus diesem Grund ist das Ergebnis der automatischen Umwandlung seit PHP 3.0.12 und auch in PHP 4.0b3-RC4 nicht definiert . Lösungen werden noch dikutiert .

Typ-Umwandlung

Typ-Umwandlung in PHP funktioniert vielfach wie in C : Der Name des gewünschten Typs wird vor der umzuwandelnden Variablen in Klammern gesetzt .

 
$foo

 
=

 
10

 
;

 
/

 
/

 
$foo

 
ist

 
ein

 
Integer-Wert

 
$bar

 
=

 
(float

 
)

 
$foo

 
;

 
/

 
/

 
$bar

 
ist

 
vom

 
Typ

 
float





Folgende Umwandlungen sind möglich :



Anmerkung : Ansttat 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 :

 
$foo

 
=

 
(

 
int

 
)

 
$bar

 
;

 
$foo

 
=

 
(

 
int

 
)

 
$bar

 
;





Es ist nicht immer offenkundig , was bei der Typ-Umwandlung geschieht . Für weitere Informationen schauen Sie unter folgenden Abschnitten nach :



Wenn 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 :

 
$var

 
=

 
'

 
ciao'

 
;

 
$arr

 
=

 
(array

 
)

 
$var

 
;

 
echo

 
$arr[0]

 
;

 
/

 
/

 
gibt

 
'ciao

 
'

 
aus





Sobald eine skalare oder String-Variable in ein Objekt gewandelt wird , wird die Variable zu einem Attribut des Objekts ; der Eigenschafts-Name wird 'scalar ' :

 
$var

 
=

 
'

 
ciao'

 
;

 
$obj

 
=

 
(object

 
)

 
$var

 
;

 
echo

 
$obj

 
-

 
scalar

 
;

 
/

 
/

 
gibt

 
'ciao

 
'

 
aus