phpbar.de logo

Mailinglisten-Archive

[php] unerwartete stringausgabe

[php] unerwartete stringausgabe

Alexander Wagner wagner at bonn.edu
Mit Jun 28 12:15:49 CEST 2006


> Das Sprachkonstrukt echo kann einen oder mehrere Parameter übergeben
> bekommen. Aus meiner Sicht sind daher nur der Punkt für die
> Zusammensetzung von Zeichen(ketten) und das Komma zur Trennung der
> Parameter in dem Konstrukt erlaubt.

Wenn ein Komma vorhanden ist, sinds mehrere Parameter, sonst nur einer. Es 
gibt in diesem Fall keinerlei Syntaxproblem im Sinne eines Syntaxfehlers, 
lediglich die Operatorassoziativität und das automatische type-casting sind 
etwas verwirrend.

> Diese Überlegung stützt aus meiner Sicht das Ergebnis des Befehls
> 	echo $i."+".$j."=".$i+$j, ' - huhu';
> Die Ausgabe ist nämlich dann
> 	15 - huhu

Deine Sicht ist kaputt. Du zeigst hier genau eine Sache, nämlich dass rechts 
von dem Komma der String ' - huhu' steht und links davon dasselbe wie vorher.

Um deiner echo-Komma-Theorie den Todesstoss zu geben:
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
Gesundheit
  Waq

-- 
Girl to Largo: 'Trying to look up her skirt doesn't say "good intentions" to 
any girl.'
Largo: 'Interesting.'

php::bar PHP Wiki   -   Listenarchive