Der Martin: Rechungen innerhalb Stringerzeugung geht nicht

Beitrag lesen

Hallo,

darf man keine Rechnungen innerhalb einer Stringdeklaration anstellen?

doch, sicher. Ausdrücke lassen sich beliebig verschachteln, solange sie typkompatibel sind (oder entsprechend umgewandelt werden können). Sogar die Zuweisung innerhalb eines echo-Statements, die du hier zeigst, ist erlaubt, wenn auch sehr ungewöhnlich.

echo $acttreffer = '<p>xxx'.$_GET['s'].' xxx '.($_GET['s']*1)+($GLOBALS ['conf_userresults']*1).' von: '. number_format($GLOBALS['treffergesamt'],0,',','.').'</p>';

Mal abgesehen davon, dass du den Gesamtausdruck hier im Posting-Text mit einem Zeilenumbruch auseinandergerissen hast: Ist das dein exakter Quellcode? Kein Abschreibfehler? Denn der Code ist formal korrekt.
Ich drösel das mal auf:

echo $acttreffer =
     '<p>xxx'
   . $_GET['s']
   . ' xxx '
   . ($_GET['s']*1)+($GLOBALS['conf_userresults']*1)
   . ' von: '
   . number_format($GLOBALS['treffergesamt'],0,',','.')
   . '</p>';

Jetzt sieht man auch, dass da eine Addition zweier numerischer Werte in einer Stringverkettung steht. Was bindet stärker: Stringverkettung oder Addition? Ich würde den numerischen Teilausdruck mal klammern.

Wenn ich aber das einzeln deklariere, dann gehts:
$tmp_vonbis = ($_GET['s']*1)+($GLOBALS['conf_userresults']*1);

Das würde mich in meiner Ahnung bestärken.

Ach ja, keine Fehlermeldung wird ausgegeben, nur beim Testen habe ich mal das versucht:

echo $acttreffer = '<p>xxx'.$_GET['s'].' xxx '.($_GET['s']*1)+5.' von: '. number_format($GLOBALS['treffergesamt'],0,',','.').'</p>';
Das mag er auch nicht dann gibts Syntaxfehler.

Äh, natürlich: Der Teilausdruck "5." wird als Fließkommazahl interpretiert, und dahinter fehlt dann der nächste Operator. Ein Leerzeichen an der richtigen Stelle wirkt Wunder. ;-)

Ciao,
 Martin

--
Zwei Stammtischbrüder:
Hier steht, dass laut Statistik über 60 Prozent aller Ehefrauen fremdgehen.
Was soll ich mit dieser Information? Ich brauche Namen, Fotos, Telefonnummern ... !