phpbar.de logo

Mailinglisten-Archive

[php] unerwartete stringausgabe

[php] unerwartete stringausgabe

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Jun 28 13:00:38 CEST 2006


Hi, :-)

Am Mittwoch, 28. Juni 2006 12:15 schrieb Alexander Wagner:
> Um deiner echo-Komma-Theorie den Todesstoss zu geben:

das war keine Theorie, sondern eine funktionierende Lösung, entsprungen 
aus einigen falschen Überlegungen, aber trotzdem absolut korrekt. :-) 
echo $i."+".$j."=", $i+$j; führt zu dem gewünschten 
Ausgabeergebnis. ;-)

> echo "8"."+"."4"."="."2"+1;
> gibt "9" aus und nicht "3".
> Und
> $x =  "8"."+"."4"."="."2"+1;
> echo $x;
> hat dasselbe ergebnis, es handelt sich hier also um keine Spezialität
> von echo, sondern um eine folge der ganz normalen
> Ausdrucks-Auswertung in PHP.
>
> Das liegt daran, dass zuerst der String "8+4=2" zusammengebaut und
> dann zwecks Addition aus diesem String die 8 rausgefischt wird, also
>       echo ("8"."+"."4"."="."2")+1;
> ==> echo "8+4=2"+1;
> ==> echo 9

Ok, ich fasse noch einmal zusammen.

1. Reinhold und Du hattet recht. :-)

2. Ich hatte mit meiner Erklärung des Phänomens nicht recht, weil ich 
bei dem automatischen Type-casting verloren gegangen bin und dann 
falsche Überlegungen angestellt und mein Heil in einer - auch 
funktionierenden - echo-Lösung gesucht habe. ;-)

3. Auch wenn ich die Argumentation nachvollziehen kann, warum es hier 
nicht zu einem Syntaxfehler - korrekter wäre wohl: Typfehler - kommen 
muß und kann, bleibe ich bei der Auffassung, daß eine stärkere 
Typenstrenge hier schon sinnvoll wäre.

Diese ganzen Automatismen sind ja u.a. auch dafür da, daß es dem 
Programmierer, insbesondere auch Anfängern, einfacher gemacht werden 
soll. Herauskommen aber wie hier Ergebnisse, die dann ein besonders 
tiefes Wissen in bestimmten Punkten erfordern, um verstanden zu werden.

Obwohl mir sowohl die Mechanismen der Typenkonvertierung als auch der 
Operatorenreihenfolge bekannt sind, bin ich nicht auf die Idee 
gekommen, daß die in diesem Gewuseln in dem echo-Befehl dann so 
zusammenwirken.

Ich bin für den Typenstrenge-Knopf in PHP. ;-) Bis dahin sage ich 
zunächst einmal herzlichen Dank, daß Ihr mich auch dahin gebracht habt, 
daß zu verstehen, was Ihr von Anfang an gesagt habt. :-D


Viele Grüße

Lutz

php::bar PHP Wiki   -   Listenarchive