phpbar.de logo

Mailinglisten-Archive

[php] unerwartete stringausgabe

[php] unerwartete stringausgabe

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Jun 28 11:27:27 CEST 2006


Hallo Michael,

Am Mittwoch, 28. Juni 2006 11:01 schrieb Michael Borchers:
> $i=10;
> $j=5;
>
> echo $i."+".$j."=".$i+$j;
>
>
> das resultat: 15. schock. nach längerem probieren erreichen wir
> mittels
>
> echo $i."+".$j."=".($i+$j);

ich weiß nicht, ob ich mir hier gerade die richtige Lösung erarbeitet 
habe, trotzdem hier mein Erklärungsversuch:

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.

Daher ist meine erste Schlußfolgerung, daß das freistehende Pluszeichen 
normalerweise zu einem Syntaxfehler führen müßte. Da dieser aber nicht 
auftritt, scheint echo also hinzugehen und diesen Fehler nach einer 
internen Logik zu korrigieren.

Es scheint den Teil, der eigentlich in Klammern gesetzt werden müßte 
($i+$j), bei Deiner fehlerhaften Konstruktion als ersten und einzigen 
gültigen Parameter von echo zu betrachten. 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

Die Schreibweise, die den Syntaxfehler korrigiert, den Dein Befehl 
enthält, lautet folglich:
	echo $i."+".$j."=", $i+$j;

Oder eben alternativ wie Dein zweiter Befehl mit Klammerung.

Das Phänomen hat also nichts mit der Operatorenreihenfolge 
( http://www.php.net/manual/en/language.operators.php#language.operators.precedence ) 
zu tun, wie ich zunächst vermutet hatte und wie Du wohl indirekt auch 
vermutet hast, wie Dein Lösungsansatz mit der Klammerung vermuten läßt.

Auf jeden Fall zeigt dieser Fall wieder, daß eine saubere Programmierung 
niemals mit sinnvoller, logischer Klammerung sparen sollte. So wird der 
Code sowohl für den Programmierer als auch für PHP eindeutig(er).


Viele Grüße

Lutz

php::bar PHP Wiki   -   Listenarchive