mitmario.dev

Variablen

PHP Sandbox 4 Min Lesezeit 3 BeispieleLektion 1 von 7

In Abschnitt 1 hast du Text ausgegeben, der genau so im Code stand. Damit kommt man nicht weit: ein Programm ist erst dann eines, wenn es mit Werten arbeitet, die es vorher nicht kannte. Dafür brauchst du einen Ort, an dem so ein Wert liegen kann, und einen Namen, unter dem du ihn wiederfindest.

Genau das ist eine Variable.

Das Dollarzeichen gehört zum Namen

Eine Variable legst du an, indem du ihr etwas zuweist. Ein Name, ein Gleichheitszeichen, ein Wert, ein Semikolon. Eine eigene Zeile für „hier gibt es ab jetzt eine Variable” braucht PHP nicht.

Ein Wert bekommt einen Namen
<?php

$name = "Mia";

echo "Hallo $name!\n";

$name = "Tom";

echo "Hallo $name!\n";

Zwei Dinge lohnen sich hier. Das erste ist das Dollarzeichen: Es steht nicht für die Zuweisung, sondern es ist der erste Buchstabe des Namens. Die Variable heißt $name, nicht name, und sie heißt so an jeder Stelle, an der sie auftaucht. Wenn du in einem Buch oder Video mal name ohne Dollarzeichen siehst, geht es dort um etwas anderes, um eine Konstante zum Beispiel, und die kommt später in diesem Abschnitt.

Das zweite ist das Gleichheitszeichen, und das ist eine echte Stolperstelle. $name = "Mia" behauptet nicht, dass beides gleich ist. Es tut etwas: Es legt den Wert rechts in die Variable links. Lies die Zeile von rechts nach links, dann stimmt das Bild. Ob zwei Dinge gleich sind, fragt man in PHP ganz anders, das kommt in Abschnitt 3.

Deshalb funktioniert auch die zweite Zuweisung im Beispiel. $name bekommt einen neuen Wert, und der alte ist danach weg. Nicht daneben, nicht darunter: weg. Eine Variable hält genau einen Wert, den letzten, den du hineingelegt hast. Im Reiter Debug kannst du dabei zusehen, ein Klick auf Aufzeichnen genügt: Vor dem ersten echo steht name="Mia", vor dem zweiten name="Tom", und zu keinem Zeitpunkt beides.

Welche Namen erlaubt sind

Ein Variablenname fängt nach dem Dollarzeichen mit einem Buchstaben oder einem Unterstrich an, danach dürfen auch Ziffern kommen. $preis, $preis2, $_intern sind in Ordnung, $2preis nicht. Umlaute funktionieren zwar, aber im Kurs kommen sie nicht vor: Namen bleiben hier bei den 26 Buchstaben, weil das überall läuft und niemanden überrascht.

Wichtiger als die Regel ist eine Eigenschaft, die dich garantiert einmal Zeit kosten wird.

Groß und klein sind zwei verschiedene Variablen
<?php

$anzahl = 3;

echo "Bestellt: $anzahl\n";
echo "Geliefert: $Anzahl\n";
echo "fertig\n";

$anzahl und $Anzahl sind für PHP zwei völlig verschiedene Variablen. Die zweite hat nie einen Wert bekommen, also ist sie leer, und in der Ausgabe steht hinter Geliefert: einfach nichts.

Schau dir dazu den Fehlerkanal an, im Terminal. Dort steht Undefined variable $Anzahl und die Zeilennummer dazu. Das ist eine Warning, und du weißt aus Lektion 1.4, was das bedeutet: Das Programm bricht nicht ab, es läuft weiter, es liefert nur an dieser Stelle Unsinn. Die dritte Zeile fertig beweist es, und der Exit-Code bleibt bei 0.

Genau deshalb ist diese Warnung so unangenehm. Ein Absturz fällt auf. Eine Zeile, in der ein Wort fehlt, fällt erst auf, wenn sich jemand beschwert. Sieh dir nach jedem Lauf den Fehlerkanal an, auch wenn die Ausgabe richtig aussieht.

Rechnen und überschreiben

Variablen sind dazu da, dass man mit ihnen weiterarbeitet. Auf der rechten Seite einer Zuweisung darf deshalb stehen, was du willst, auch andere Variablen.

Aus zwei Werten wird ein dritter
<?php

$grundpreis = 12;
$versand = 5;

$summe = $grundpreis + $versand;

echo "Summe: $summe Euro\n";

$summe = $summe * 2;

echo "Zwei Bestellungen: $summe Euro\n";

Die interessante Zeile ist $summe = $summe * 2;. Von rechts nach links gelesen ergibt sie Sinn: PHP holt den Wert, der gerade in $summe liegt, verdoppelt ihn und legt das Ergebnis wieder in $summe. Erst rechnen, dann zuweisen. Als Gleichung gelesen wäre die Zeile Unsinn, als Anweisung ist sie alltäglich.

Beachte nebenbei, dass die Namen sagen, was drinsteht. $grundpreis und $versand kann man nach einer Woche noch lesen, $a und $b nicht. Das klingt nach einer Kleinigkeit und ist der billigste Weg, sich später Ärger zu ersparen.

Was PHP nicht von dir verlangt

Dir ist vielleicht aufgefallen, dass nirgends steht, was für eine Art Wert in einer Variablen liegt. $name hält Text, $anzahl hält eine Zahl, und du musstest das nirgends ankündigen. Andere Sprachen wollen das wissen, PHP nicht.

Das ist bequem und hat einen Preis: Man sieht einer Zeile nicht an, was in ihr steckt. Ob in $menge die Zahl 3 liegt oder der Text "3", ist im Code nicht zu erkennen, und in PHP macht dieser Unterschied gelegentlich mehr aus, als einem lieb ist. Deshalb steht in diesem Abschnitt eine eigene Lektion darüber, wie du nachsiehst, und in Abschnitt 6 lernst du, wie du es doch aufschreiben kannst, wenn du willst.

Übrigens: Dass in "Hallo $name!" der Wert eingesetzt wird und nicht der Name dasteht, liegt an den doppelten Anführungszeichen. Das ist kein Zufall und keine Kleinigkeit, sondern das Thema der nächsten Lektion.

Wo das Ergebnis in diesem Abschnitt steht

Ein Hinweis, damit dich nichts irritiert: In Abschnitt 1 lief bei einigen Beispielen ein kleiner Webserver, und im Reiter Browser stand eine Seite. In diesem Abschnitt passiert das nicht ein einziges Mal. Hier geht es um Werte, nicht um Seiten, und alles, was du siehst, steht im Terminal: die Ausgabe deines Programms, darunter in Rot der Fehlerkanal.

Der Browser bleibt also leer, und das ist kein Ausfall. Er kommt in Abschnitt 10 zurück, sobald dein Programm Seiten ausliefert statt Text.

Zum Mitnehmen

Das Dollarzeichen gehört zum Namen und nicht zur Zuweisung. Die Variable heißt $preis, nicht preis, und das gilt an jeder einzelnen Stelle, an der sie vorkommt.

Jetzt du

Basis Konto, kostenlos

Zu 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 3 Beispielen zum Ausprobieren

    Steht hier, ohne Konto lesbar.

  • Aufgabe, dein Code läuft auf einem Server

    Öffnet sich mit dem Basis Konto.