Abschnitt 3 · Lektion 1
Rechnen
Rechnen ist das, wofür Computer ursprünglich gebaut wurden, und in PHP sieht es aus wie auf dem Papier. Du brauchst dafür ein paar Zeichen, eine Regel über die Reihenfolge und zwei Abkürzungen, die dir in fremdem Code ständig begegnen.
Die Rechenzeichen
<?php
$a = 10;
$b = 3;
echo "$a + $b = ", $a + $b, "\n";
echo "$a - $b = ", $a - $b, "\n";
echo "$a * $b = ", $a * $b, "\n";
echo "$a / $b = ", $a / $b, "\n";
echo "$a % $b = ", $a % $b, "\n";
echo "2 hoch 10 = ", 2 ** 10, "\n"; Plus, minus, mal, geteilt sind +, -, * und /. Dazu kommen zwei, die auf keiner Tastatur
beschriftet sind. ** ist die Potenz, 2 ** 10 ergibt also 1024. Und % liefert den Rest bei der
Division: 10 % 3 ist 1, weil die 3 zweimal in die 10 passt und eins übrig bleibt.
Das Prozentzeichen heißt hier also nicht Prozent. Diese Verwechslung macht man einmal und danach nie
wieder. Wer 19 Prozent von 100 will, rechnet 100 * 19 / 100, nicht 100 % 19.
Der Rest klingt nach Mathematikunterricht, ist aber eines der Werkzeuge, die du am häufigsten
brauchst. Jede zweite Tabellenzeile einfärben, prüfen ob eine Zahl gerade ist, eine Liste auf Seiten
aufteilen, Sekunden in Minuten umrechnen: überall steckt % drin. Zusammen mit intdiv aus Lektion
2.3 ergibt es ein Paar. intdiv sagt dir, wie oft etwas hineinpasst, % sagt dir, was danach übrig
ist.
Bei der Division lohnt noch ein zweiter Blick auf die Ausgabe. 10 / 3 zeigt 3.3333333333333, also
dreizehn Dreien und dann Schluss. Das ist nicht das Ende der Zahl, sondern die Rundung beim Ausgeben,
die du aus Lektion 2.3 kennst. Wer den Rest sehen will, tippt php -r 'var_dump(10 / 3);' im
Terminal: float(3.3333333333333335), eine Stelle mehr, und die ist keine Drei.
Punkt vor Strich
<?php
$preis = 20;
$menge = 3;
$versand = 5;
echo "2 + 3 * 4 ergibt ", 2 + 3 * 4, "\n";
echo "(2 + 3) * 4 ergibt ", (2 + 3) * 4, "\n";
echo "Ohne Klammern: ", $preis * $menge + $versand, "\n";
echo "Mit Klammern: ", $preis * ($menge + $versand), "\n"; PHP rechnet wie du in der Schule: erst Potenz, dann Punkt, dann Strich. 2 + 3 * 4 ergibt also 14 und
nicht 20.
Das klingt harmlos, bis ein Betrag daran hängt. Die letzten beiden Zeilen im Beispiel unterscheiden sich nur durch ein Klammerpaar, und heraus kommen 65 und 160. Eine der beiden Zahlen wäre auf einer Rechnung eine sehr unangenehme Überraschung.
Setz im Zweifel Klammern, auch dort, wo sie rechnerisch überflüssig sind. Sie kosten nichts, und wer die Zeile später liest, muss nicht überlegen. Diese Person bist überraschend oft du selbst.
Zwei Abkürzungen
<?php
$summe = 100;
$summe += 5;
$summe -= 20;
echo "Summe: $summe\n";
$i = 5;
echo "Erst zeigen, dann zaehlen: ", $i++, " und danach steht $i drin\n";
$j = 5;
echo "Erst zaehlen, dann zeigen: ", ++$j, " und danach steht $j drin\n"; $summe = $summe + 5; schreibt in der Praxis niemand aus. Die Kurzform heißt $summe += 5;, und es
gibt sie für alle vier Grundrechenarten: -=, *=, /=.
Für den häufigsten Fall, eins dazu, gibt es eine noch kürzere Form: $i++. Und die hat eine
Zwillingsschwester, ++$i. Solange die Zeile nichts weiter tut als hochzählen, sind beide
gleichwertig.
Anders wird es, sobald du das Ergebnis in derselben Zeile benutzt. $i++ gibt den alten Wert
heraus und zählt danach hoch. ++$j zählt zuerst hoch und gibt den neuen Wert heraus. Im
Beispiel steht beides untereinander: einmal erscheint eine 5, einmal eine 6, und hinterher steht in
beiden Variablen dieselbe 6.
Auswendig lernen musst du das nicht. Erkennen solltest du es aber, denn das ist eine der Zeilen, an denen jemand eine Stunde sucht, weil eine Zählung um genau eins danebenliegt.
Teilen durch null
<?php
$gesamt = 100;
$teiler = 0;
echo "Vor der Rechnung\n";
echo $gesamt / $teiler;
echo "Diese Zeile wird nie erreicht\n"; Früher war das eine Warnung. Das Programm lief weiter und rechnete mit Unsinn weiter, was die schlechtere von beiden Möglichkeiten ist.
Seit PHP 8 ist es ein Fatal error. Auf dem Fehlerkanal steht Uncaught DivisionByZeroError, das
Skript bricht an genau dieser Zeile ab, und der Exit-Code ist 255. Beides kennst du aus Lektion 1.4, und die
letzte Zeile im Beispiel wird tatsächlich nie erreicht.
Das ist eine gute Nachricht. Ein Programm, das abbricht, zeigt dir die Zeile, in der etwas nicht stimmt. Ein Programm, das weiterläuft, zeigt dir drei Bildschirme später einen falschen Betrag, und dann suchst du an der falschen Stelle.
Für % gilt dasselbe, auch dort ist eine Null als Teiler ein Fehler. Abfangen lässt sich beides,
indem man vor der Rechnung nachsieht, ob der Teiler null ist. Das Werkzeug dafür bekommst du in
Abschnitt 4.
Zum Mitnehmen
Rechnen sieht in PHP aus wie auf dem Papier, mit zwei Zeichen, die es auf dem Papier nicht gibt. Das wichtigere von beiden ist der Rest bei der Division, und den brauchst du öfter, als der Name vermuten lässt.
Jetzt du
Basis Konto, kostenlosZu dieser Lektion gehört eine Aufgabe. Du schreibst den Code selbst, und nach jedem Lauf sagt dir eine Prüfliste, was schon stimmt.
Dafür brauchst du das Basis Konto. Es kostet nichts, und ein Passwort gibt es auch nicht.
In diesem Kurs läuft dein Code auf einem Server. Dafür hat das Basis Konto 1 Stunde im Monat, mehr Zeit gibt es mit dem Premium Konto.
Was in dieser Lektion steckt
-
Artikel mit 4 Beispielen zum Ausprobieren
Steht hier, ohne Konto lesbar.
-
Aufgabe, dein Code läuft auf einem Server
Öffnet sich mit dem Basis Konto.