Andreas Görtz: Mehrere Variablen aneinanderhängen und ausgeben

Beitrag lesen

Hi,

$a ="Ich";
$b ="bin";
$c ="Joschy";

diese will ich ohne Leerzeichen per echo ausgeben:
etwa so: echo $a$b$c;

Das klappt bei mir prima,

nein, das geht so nicht:

ag@bart:~$ php -r '$a = "foo"; $b = "bar"; echo $a$b;'

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in Command line code on line 1

In Anführungszeichen dagegen würde es funktionieren:

ag@bart:~$ php -r '$a = "foo"; $b = "bar"; echo "$a$b";'
foobar

Warum ist das so? echo erwartet ein oder mehrere Argumente vom Typ String. Das eine Argument »$a$b«, welches du mittels

  
echo $a$b$c;  

an »echo« übergibst, wird von PHP als Variable angesehen ("Variables in PHP are represented by a dollar sign followed by the name of the variable"). Das Zeichen »$« ist in Variablennamen allerdings nicht erlaubt, daher wird o.a. Fehler geworfen.

Oder muss da noch jeweils ein punkt dazwischen, damit klar ist wo wann welche variable zuende ist?!

ja, auch das würde funktionieren:

ag@bart:~$ php -r '$a = "foo"; $b = "bar"; echo $a . $b;'
foobar

...und wäre mithin wohl am saubersten.

Kann mir jemand den korrekteren Syntax hier aufzeigen?

syntaktisch korrekt ist alles, was du unter dem Kapitel Variable parsing auf o.g. Seite nachlesen kannst. Schneller ist es allemal, die Variablen nicht innerhalb doppelter Anführungszeichen parsen zu lassen, siehe z.B. dieses Archivposting [1] ff., was bei kleinen Applikationen allerdings vernachlässigbar ist.

[1] Wobei ich nicht weiß, ob die Unterschiede aktuell noch so groß sind.

Gruß,
Andreas.