Mailinglisten-Archive |
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