ein Echo erweitern begrenzt?

Warum denn?

ist doch schön getrennt html in " mit php variablen erweitert .variablen. und dann wieder " html....

Erklärung bitte?=)
 
Naja, ich denke x = y ist ne Anweisung und keine Variable - Ausnahme ist hier (x++) ...

Aber ich hab das nicht probiert - ist nur mein Verständnis von php!

Dirk
 
Könnte Möglich sein. Jedoch warum Funktioniert es, wenn ich die Zeile mit $preis*=$anzahl abschliesse und darunter ein neues Echo eröffne?

Zudem wird ja diese Zeile richtig angezeigt die nächste jedoch nicht. Es ist merkwürdig ohne stichfeste Begründung verstehe ich das nicht. Jedoch ist es halb so schlimm, denn es funktioniert ja. Hat mich nur verwundert.

Thx Greez und mal auf Erledigt
 
Der gibt das Ergebnis der Berechnung noch aus - denke ich mal - und macht dann schluss, da der rest irgendwie verwirrend sein muss für den kleinen php-Interpreter .. *grins*

Ganz davon abgesehen, ob der das noch ausgibt oder nicht, ich würde mir das nciht angewöhnen, Berechnungen und Ausgaben irgendwie zu vermengen, das geht nicht lagen gut ...


Dirk
 
Hier die Auflösung:

Syntaktisch ist
PHP:
echo "blablabla... " . $a *= $b . " bla..." .
     "bla...";
korrekt. $a *= $b ist eine Anweisung, diese hat als Rückgabewert den Wert der Zuweisung (also den neuen Wert der Variable $a). Da die Anweisung allerdings ein = enthält, wird der String an dieser Stelle unterbrochen. $i++ bzw. ++$i enthält beispielsweise kein =, daher wird auch der String nicht unterbrochen.

Genug der Theorie... Es funktioniert, wenn du die Anweisung $a *= $b einklammerst...


Gruß
split
 
Ha - das ist es! klar durch das '=' wird das ganze ne Anweisung und der gibt das Ergebnis aus - manchmal liegt die Löung so nah!

Danke für die Erklärung!

Dirk
 
Es liegt vor allem an der Rangfolge der Operatoren, wobei der Verkettungsoperator (.) dem multiplikativen Zuweisungsoperator (*=) übergeordnet ist. Somit wird es semantisch zu einem Ausdruck, der, um die operatorbedingte Zusammengehörigkeit zu verdeutlichen, wie folgt aussieht:
Code:
"…".$var1   *=   $var2."…"
Dem "…".$var1 kann jedoch nicht der evaluierte Wert von $var2."…" zugeordnet werden.

Abhilfe schafft hier die Klammerung des Ausdrucks:
PHP:
"…" . ( $var1 *= $var2 ) . "…"
 
Cool das Geheimnis ist gelüfftet:)

Wieder ein wenig mehr Know-How;) - Falls ich es in Zukunft wieder habe weiss ich es jetzt;)

Thx und ERLEDIGT:)

Vielen Dank
 
Zurück