[gelöst] Rechnen mit PHP - kein Ergebnis

Morgen!

Will folgende Ausgabe erzeugen:

Code:
17 * 1 = 17
17 * 2 = 34
........
17 * 9 = 153

Code:
<?
$ergebnis = $multiplikator *= 17;
for ($multiplikator = 1; $multiplikator <= 9; $multiplikator++) {
echo "17 *= $multiplikator = ";
echo "$ergebnis";
echo "<br>";}
?>

bringt mir aber nur

17 * 1 = 0
17 * 2 = 0
....

was mache ich falsch? Und ist die Variable $ergebnis überhaupt nötig?

danke
 
OMG.
Erstmal finde ich es nicht sehr vorteilhaft, Variablen so auszugeben:

Code:
echo "$variable";

Eine solche Anweisung würde ich auf JEDEN FALL direkt durch diese hier ersetzen:

Code:
echo $variable;

Denn wenn man Strings in " setzt, durchsucht PHP diesen String bei der Ausgabe (durch echo) nach enthaltenen Variablen. Wozu also PHP suchen lassen, wenn man die Variable auch direkt ausgeben kann?
Anmerkung: Ich verwende in 99% der Fälle nur das ' anstatt ", denn damit belaste ich den Server nicht so stark (PHP sucht in Strings, die mit ' eingegrenzt sind, nicht mehr nach Variablen. Diese Suche ist normalerweise sehr ressourcenlastig, deswegen ist ' also besser).

Und der Fehler in deinem Skript liegt darin, dass die Ergebnis-Variable nie einen anderen Wert zugewiesen bekommt, als $multiplikator * 17.
In der FOR-Schleife wird der Wert ja nicht aktualisiert!!



MfG, BattleMaker
 
Also rein von der logik her müsste es schonmal so aufgebaut werden

<?
||=
|| for ($multiplikator = 1; $multiplikator <= 9; $multiplikator++) {
|| echo "17 *= $multiplikator = ";
||=> $ergebnis = $multiplikator *= 17;
echo "$ergebnis";
echo "<br>";}
?>
 
Außerdem ist *= eine Zuweisung und kein Rechen Operator.

Eine Zeile:
$ergebnis = $multiplikator *= 17;
würde also zuerst $multiplicator mit dem Wert von 17 * sich selbst zu gewiesen und dann der Variable $ergebnis zugewiesen, was an sich theoretisch geht, aber keine schöne Lösung ist ;)

Wie wäre es mit:
Code:
<?
for ($multiplikator = 1; $multiplikator <= 9; $multiplikator++) {
echo "17 * ".$multiplikator."  = ";
echo $multiplikator * 17;
echo "<br>";
}
?>

PS: Dein Fehler lag eigentlich (wie flame bereits gepostet hat) darin, dass du die besagte Zuweisung nur einmal VOR der Schleife vor nimmst und danach nicht mehr.
Laut deiner Problemstellung müsste $ergebnis jedes mal neu errechnet werden.

PSS: $ergebnis ist eigentlich nicht nötig, aber schaden tuts auch nicht :D
 
danke für eure Hilfe!

Habs jetzt mit einer (sich aktualisierenden) while-Schleife gelöst.

Code:
<?
$multiplikator = 1;
while ($multiplikator <= 9){
$ergebnis = $multiplikator * 17;
echo "17 * $multiplikator = $ergebnis";
$multiplikator++;
echo '<br>';
}
?>

@BattleMaker:
Wenn man die " beim ersten echo durch ' ersetzt, werden statt den Zahlen die Variablennamen angezeigt. beim zweiten echo funktioniert es aber wie du gesagt hast, danke! Ich probiere natürlich den Code so effizient wie möglich zu gestalten.

@p-logic:
Etwas zu spät gesehen, aber danke! was bewirken die Punkte bei .$multiplikation. ?
 
durch ' statt " werden variablen namen ausgegeben und nicht deren werte, darum muss man die variablen extra "anhängen".
in PHP werden strings durch den . verknüpft.
optimaler weise würde ich den code so schreiben:

Code:
<?
for ($multiplikator = 1; $multiplikator < 10; $multiplikator++) {
 echo '<br>17 * '.$multiplikator.' = ';
 echo $multiplikator*17;
}
?>

das <br> hab ich an den anfang gestellt um ein echo zu sparen (weuiss nicht, an welcher stelle der code steht, sonst einfach das <br> vorher weglassen)

PS: Hab schon lang nix mehr mit PHP gemacht, lass mich gern korregieren ;)
 
Die Punkte ketten zwei Strings aneinander.

PHP kann zwar die Variablen aus einem String (in doppelten Anführungszeichen") ersetzen, aber das hab ich mir zugunsten anderer Sprachen in denen das nicht geht ab gewöhnt :D

Wenn du in einem String in doppelten Anführungszeichen ein Steuerzeichen ($, " oder ') als Zeichen anzeigen willst, kannst du sie auch einfach escapen:
echo '$variable = '.$variable;
ist das selbe, wie:
echo "/$variable = $variable";

Welche Methode man benutzt ist meistens egal :P

Noch was: Deine While-Schleife macht im Prinzip das selbe, wie deine FOR-Schleife im ersten Beispiel ;)

PS: ups,... da war wohl einer schneller
 
Zurück
Oben