PHP praxisorientiert lernen: Variablen (I)

Aus Wikibooks


Bisher können Sie einen statischen Text ausgeben - der erste Schritt zum PHP-Programmierer ist getan. Sie wissen nun, dass jeder Befehl in PHP von einem Semikolon abgeschlossen wird, das am Zeilenende steht. Sie wissen auch, dass Sie Ihren Text für die Ausgabe in Anführungszeichen schreiben sollen.

Was sind Variablen und wozu braucht man sie?[Bearbeiten]

Soweit so gut, nun stellen Sie sich aber vor, dass der Benutzer in einem Textfeld seinen Namen eingibt und dieser Benutzer dann von Ihnen - durch das PHP-Script - mit seinem persönlichen Namen begrüßt werden soll - klingt irgendwie netter als "Hallo Besucher".

Solch eine Formular-Verarbeitung (so nennt man das Auswerten der Daten, welche in ein Formular eingegeben wurden) können Sie im Moment leider noch nicht machen, trotzdem bleibt die Problemstellung die gleiche:

Das Programm soll Daten verarbeiten, deren genaue Werte Sie bei der Programmierung noch nicht kennen.

Wenn das Programm nachher interpretiert wird, dann kennt es natürlich die Werte - in unserem Fall den Namen des Benutzers -, jedoch können Sie in Ihrem Programm schlecht schreiben echo "Hallo Franz!"; - Sie als Programmierer wissen ja nicht wie der Benutzer heißt.

Sie müssen also in Ihrem Programm Platzhalter anstelle der wirklichen Werte benutzen, diese Platzhalter nennt man Variablen.

Der Aufbau von Variablen[Bearbeiten]

Warum das Beispiel mit dem Benutzernamen?
Ein Beispiel zu benutzen, das der Leser nicht nachbauen kann, klingt vielleicht zuerst etwas komisch erklärt sich jedoch relativ einfach:

Die Problematik/der Sinn von Variablen lässt sich für einen Anfänger relativ schwer erschließen, die meisten Themengebiete, in denen Variablen genutzt werden, sind fortschrittlich - am Anfang hat der Programmierer "alles bei der Hand", es gibt also keine externe Quellen für Daten (Datenbanken, Benutzereingaben, etc.), sondern nur das, was der Programmierer in seinem Script eingegeben hat.

Das Beispiel mit dem Benutzernamen bietet sich an, da jeder von Ihnen solch eine Funktion schon einmal gesehen hat und der Sinn dieser sich einfach und schnell erschließen lässt.

Stellen Sie sich nun vor, Sie wollen den Inhalt der Variable (also des Platzhalters) nun ausgeben - schließlich brauchen Sie ein "Hallo Name des Benutzers".

Unser Platzhalter heißt in diese Fall username (Sie sollten immer Englisch als Sprache benutzen - so kann man Ihren Quellcode auch verstehen, wenn man nicht Ihre Muttersprache spricht - spätestens wenn Sie sich fremden Quellcode mit z.B. spanischen Kommentaren anschauen, wissen Sie warum).

Wieso also nicht echo "username";? Wenn Sie das mal ausprobieren, bzw. etwas darüber nachdenken, werden Sie schnell zu dem Schluss kommen, dass der Interpret nicht zwischen dem Wort username und dem Platzhalter username unterscheiden kann - egal, ob dieses Wort nun existiert oder nicht.

Deshalb schreibt man ein Dollar-Symbol vor den Variablen Name, also $username.

Ihr Code würde also lauten: echo "$username"; - das funktioniert (jedenfalls eingeschränkt, siehe nächster Absatz), ist jedoch nicht wirklich schön (dieses Thema wird weiter unten behandelt).

Das Zuweisen eines Wertes an eine Variable[Bearbeiten]

Fakt ist und bleibt, dass Sie noch nicht wissen, wie man Formulare verarbeitet und deshalb ihr Platzhalter im Script keinen Inhalt hat.

Die Lösung dieses Problems lautet schlicht und einfach, dass Sie selbst im Script dem Platzhalter/der Variable einen Wert zuweisen. Dadurch wäre die Variable zwar eigentlich sinnlos - schließlich kennt man den eigentlichen Wert und muss nicht mehr mit dem Platzhalter dafür arbeiten - jedoch geht es hier nun einmal um Variablen und nicht um Sinn- und Unsinn.

Wie in Mathe: Die Variablen bekommen ihren Wert wie in einer mathematischen Gleichung mit dem Gleichheitszeichen "=" zugewiesen. Es wird aus Übersichtlichkeits-Gründen auf HTML verzichtet.
Code:

<?php
$username = "Franz";
echo $username; //auch möglich aber nicht empfohlen ist echo "$username"; 
?>

Output:

Franz

Aus dem Beispiel kann man die folgenden Strukturen erkennen:

  • In der ersten Zeile wird der Variable username (PHP-Syntax: $username) der Wert "Franz" zugewiesen (achten Sie auf die Anführungszeichen!) und der Befehl mit einem Semikolon abgeschlossen.
  • Die zweite Zeile gibt den Inhalt der Variable $username mit dem bekannten Befehl echo aus. Auch möglich, aber nicht empfohlen, ist die Schreibweise echo "$username"; - mehr dazu im nächsten Kapitel.

Variablen-Typen[Bearbeiten]

Sie werden sich vielleicht in den letzten Absätzen über die Anführungszeichen bei den Variablen gewundert haben (z.B. bei $username = "Franz";), diese Anführungszeichen markieren String (engl. "Zeichenkette") - solche Strings sind Variablen, welche eine Reihe von Zeichen beinhalten, der Benutzername -eine Reihenfolge von Zeichen- ist ein gutes Beispiel für Strings.

Aber es existieren noch andere Typen von Variablen, z.B. für Ganzzahlen -Integer- (z.B. "1","9","3","-2","-5" aber nicht "2,4"), oder für Fließkommazahlen -Float- (z.B. "1.4", "-0.9", "1.0" - zu beachten: die amerikanische Schreibweise mit dem Punkt statt Komma!).

Code:

<?php
// Der Name als Zeichenkette, genannt String
$username = "Franz";
echo $username;

echo "<br />"; // <- ein einfacher HTML-Zeilenumbruch, da ansonsten alle Ausgaben aneinander "kleben" würden

// Das "grobe" Alter als "Ganzzahl", genannt Integer
$age = 14;
echo $age;

echo "<br />";

// Das genaue Alter als Fließkommazahl, genannt Float
$age_accurate = 14.5;
echo $age_accurate;
?>

Output:

Franz<br />14<br />14.5
Render:
Franz
14
14.5

Feststellungen[Bearbeiten]

  1. (Alle Befehle enden mit einem Semikolon (Strichpunkt).)
  2. (Im Output wurden keine Zeilenumbrüche eingefügt, sondern nur beim Rendering.)
  3. Bei allen echos wurden keine Anführungszeichen gesetzt.
  4. Man hat nirgendwo angegeben, ob die Variable ein String oder eine Zahl ist.
  5. Auch um die Zahlen standen keine Anführungszeichen!

Schlussfolgerungen[Bearbeiten]

  1. (Man kann's einfach nicht oft genug sagen! ;-))
  2. (Um im Output ein Zeilenumbruch zu erstellen, muss es einen weiteren Code geben.)
  3. Es gibt anscheinend keinen Unterschied zwischen dem Ausgeben von Variablen mit Zahlen, und Variablen mit Zeichenketten als Inhalten.
  4. Variablen sind in PHP nicht auf ein Inhalts-Typ (Zeichenkette, Ganzzahl) spezialisiert, sondern können alle Typen speichern
  5. Es müssen nur um Zeichenketten herum Anführungszeichen gemacht werden.