Hallo,
habe eine kleine Verständnisfrage und konnte hier im Forum, im PHP Handbuch und bei google nichts finden was mir weiter geholfen hat.
PHP-Code:
$zahl1=10;
$zahl2=2;
$ergebnis="Ergebnis: " .$zahl1+=$zahl2;
echo $ergebnis;
Als Ergebnis erhält man: "Ergebnis: 12" (Datentyp:String)
Der "."-Operator für Zeichenkettenverknüpfungen hat laut der Offiziellen Tabelle für Operator-Rangfolgen aus dem PHP-Handbuch einen höheren Rang als Zusammengesetzte Operatoren. Demzufolge müsste zuerst "Ergebnis: " (String) mit 10 (INT) verknüpft werden. Dann "Ergebnis: 10" (string) += 2 (INT) gerechnet werden. Da PHP das mit falschen Datentypen nicht so eng sieht macht er aus dem String eine 0, da er Zahlen bei Berechnungen nur aus Zeichenketten rausfiltert , wenn sie am Anfang der Zeichenkette stehen (der rest wird dann einfach abgeschnitten).
Das Ergebnis müsste also "2" sein. Bei anderen Operatoren funktioniert das wie erwartet. Wenn man z.b. $zahl1+$zahl2 rechnet, verhält es sich wie man anhand der Operator-Rangfolgen erwarten würde.
Wo ist mein Denkfehler?
Mal abgesehen davon das man so nicht programmiert: Es geht mir nur um das Verständnis darum wie PHP sich bei impliziter Typkonvertierung verhält und bei allen anderen Berechnungen war der das Verhalten / Der Fehler nachvollziehbar.