4. Variablen und if-Abfragen in PHP

Im vorherigen Teil des PHP-Tutorials habe ich Dir gezeigt, wie Du Kommentare in PHP dazu nutzen kannst, Deinen Code zu erklären und zu strukturieren.

Nun wollen wir uns endlich mit dem Coden an sich beschäftigen und dafür lege ich mit diesem Artikel des Tutorials die Grundlage. Denn erst mit Variablen und der Möglichkeit Variablen zu prüfen, wird eine Sprache wirklich dynamisch.

Die Variablen

Wir beginnen mit einem ganz einfachen Beispiel:

$a = 1;

Damit haben wir die Variable initialisiert, sie also zum ersten Mal gesetzt, und $a auf den Wert 1 gesetzt.

Dabei fällt auf, dass vor dem a, das $-Zeichen steht. Das ist in PHP so üblich: Jede Variable setzt sich aus dem vorangestellten $-Zeichen und Buchstaben, Zahlen und Unterstrichen zusammen, darf aber nicht mit einer Zahl beginnen.  Aufgrund dieser Struktur ist es nicht schwer eine Variable innerhalb eines Codes wiederzufinden.

Aber vielleicht ist Dir ja noch etwas aufgefallen? Richtig, wir müssen nicht den Typ dieser Variablen angeben. Wir teilen der Variable einfach einen Wert zu und PHP erkennt selbst, ob es sich um eine Zahl, einen String oder einen booleschen Wert (true/false) handelt.

Um PHP diese Erkennung zu erleichtern, sind Zeichenketten in Anführungszeichen zu setzen und Zahlen nicht.

$a = 1;
echo $a + 1; // Ausgabe: 2

$b = 'Zeichenkette';
echo "Dies ist eine ".$b; // Ausgabe: Dies ist eine Zeichenkette

Variablen müssen weder eine Zahl noch eine Zeichenkette sein, sie können auch einen booleschen Wert beinhalten. Dabei gibt es exakt zwei Möglichkeiten: true oder false. Übersetzt bedeutet das so viel wie „richtig“ und „falsch“. Diese Eigenschaft wird im Folgenden bei den if-Abfragen noch einmal interessant werden.

Mit PHP-Variablen rechnen

Doch zunächst möchte ich Dir zeigen, wie Du mit Variablen in PHP rechnen kannst. Ein einfaches Beispiel ist bereits im vorherigen Absatz zu finden. Du kannst auch einfach zwei Variablen addieren und diesen Wert einer dritten Variable zuweisen:

$a = 13;
$b = 47;
$c = $a + $b; // $c ist jetzt gleich 60

Selbstverständlich funktioniert das auch mit den anderen Grundrechen-Arten, dafür kannst Du statt einem Plus das jeweilige Zeichen einsetzen.

  • Addition mit +
  • Subtraktion mit –
  • Division mit /
  • Multiplikation mit *

Wurzel- und Potenzrechnungen sind über extra Funktionen möglich, nämlich mit sqrt() beziehungsweise pow(). Doch mit Funktionen werden wir uns erst an späterer Stelle auseinandersetzen.

Die vier Grundrechenarten können auch über eine Kurzform ausgeführt werden. Dies zeigt das nachfolgende Beispiel.

$a = 13; // $a ist gleich 13
$a += 47;  // $a ist gleich 13+47, also 60
$a /= 10; // $a ist gleich 60/10, also 6
$a *= 3; // $a ist gleich 6*3, also 18
$a -= 5; // $a ist gleich 18-5, also 13

Mit diesen Kurzformen kann sehr einfach mit einer Variable und einer weiteren Zahl gerechnet werden, sodass das Ergebnis anschließend wieder in der Variable gespeichert wird.

Variablen und Strings (Zeichenketten)

Auch für Zeichenketten gibt es solche Kurzformen. Wenn Du in einer Variable etwa den Text „Hallo“ gespeichert hast und ihn um “ Welt!“ ergänzen möchtest, funktioniert das wie folgt:

$string = 'Hallo';
$string .= ' Welt!'; // $string ist gleich 'Hallo Welt!'

Mit .= wird also eine Zeichenkette an eine Variable gehängt. Natürlich lassen sich auch Variablen und Zeichenketten kombinieren. Dann ist wieder der Punkt notwendig. Merke Dir am besten, dass eine Zeichenkette immer in Anführungszeichen stehen sollte und die Variable durch Punkte abgetrennt außerhalb der Anführungszeichen, etwa so:

$string1 = ' Welt!';
$string2 = "Hallo".$string1; // $string2 ist gleich 'Hallo Welt!'


$string3 = "Ausgabe: ".$string2." und gleich nochmal: ".$string2; // $string3 ist gleich 'Ausgabe: Hallo Welt! und gleich nochmal: Hallo Welt!'

Eventuell ist Dir aufgefallen, dass ich teilweise einfache Anführungszeichen (‚) verwende und zum Teil auch doppelte Anführungszeichen („). Wozu? Nun, ich habe einmal gelesen, dass es – wenn auch nur minimal – schneller sein soll, eine Variable, die reine Zeichenketten enthält in einfachen Anführungszeichen zu schreiben und bei einer Mischung von Zeichenketten und Variablen doppelte Anführungszeichen zu verwenden.

Du kannst auch einfach immer auf die doppelten Anführungszeichen zurückgreifen. Gerade bei komplizierteren Codes kann es allerdings durchaus hilfreich sein, zwei Anführungszeichen-Typen zu haben, etwa wenn du nach dem einen suchen willst beziehungsweise ein Anführungszeichen in einer Zeichenkette speichern willst. Dafür gibt es zwei Möglichkeiten:

$string1 = "Ausgabe: 'Hallo Welt!'"; // Variante 1
$string2 = 'Ausgabe: \'Hallo Welt!\''; // Variante 2

Variante 1: Du verwendest den einen Anführungszeichen-Typ für die Kennzeichnung in PHP und die andere innerhalb der Zeichenkette.

Variante 2: Du nutzt den Backslash (\) unmittelbar vor jedem Anführungszeichen innerhalb der Zeichenkette und verwendest beide Mal den gleichen Anführungszeichen-Typ. Ein Backslash sorgt dafür, dass PHP dieses Zeichen als einfachen Teil der Zeichenkette wertet.

if-Abfragen

Es ist gut zu wissen, was Variablen sind, aber noch besser, sie abfragen zu können. Denn erst mit dem Schema „Wenn (Bedingung) dann (Funktionen)“ wird PHP zu einer gut nutzbaren dynamischen Sprache.

Wir fangen mit einem einfachen Beispiel an. In der Variable $benutzerNummer ist die Nummer eines Benutzers gespeichert, wenn er angemeldet ist. Angemeldeten Benutzern möchten wir einen Hinweis anzeigen, den anderen Benutzern etwa Anderes.

$benutzerNummer = 13;

if ($benutzerNummer > 0) {
echo 'Du bist angemeldet.';
} else {
echo 'Bitte melde Dich an.';
}

In diesem Code stecken gleich mehrere Neuerungen. Zunächst einmal das Schema einer if-Abfrage: if (Bedingung) {  }

Für den Fall, dass die Bedingung zutrifft, wird der Code innerhalb der geschweiften Klammern ausgeführt. Befindet sich nur ein Befehl innerhalb dieser Klammern, so könntest Du sie theoretisch auch weglassen. Ich empfehle Dir aber, um Fehler zu vermeiden, immer diese Klammern zu setzen.

else könnte man mit „sonst“ übersetzen. Du hast die Möglichkeit unmittelbar danach Funktionen auszuführen, wenn die if-Bedingung nicht zutrifft. Das else kann auch noch einmal mit einem if-kombiniert werden: else if (Bedingung) {  } und theoretisch könnten darauf noch beliebig viele weitere else-if-Bedingungen und irgendwann ein einfaches else, für den Fall, dass keine der Bedingungen zutrifft, folgen.

Das klingt schon einmal kompliziert und es wird noch „schlimmer“. Innerhalb der if-Abfrage können sogar mehrere Bedingungen kombiniert werden. Also zum Beispiel: „Wenn der Benutzer eingeloggt ist ($benutzerNummer > 0) und er eine E-Mail-Adresse angegeben hat (isset($benutzerEmail)) dann tue das“.

Als Code sieht das Ganze dann so aus:

$benutzerNummer = 13;

if ($benutzerNummer > 13 && isset($benutzerEmail)) {
echo 'Eingeloggter Benutzer mit E-Mail-Adresse.';
}

Vielleicht wirst Du dich wundern, was dieses isset() denn soll. Bei dem isset() handelt es sich um eine PHP-Funktion, die den Wert true oder false zurückgibt. Sie prüft ob eine Variable initialisiert wurde, also vorhanden ist. Dafür musst Du der Funktion eine Variable als Parameter übergeben. In unserem Fall ist das $benutzerEmail.

Würdest Du diese Prüfung ohne isset() durchführen und die Variable existiert nicht, dann würde eine (wenn auch eher unwichtige) Fehlermeldung erzeugt, weil Du nur mit Variablen arbeiten kannst, die schon einmal gesetzt wurden.

if-Bedingungen mit Konnektoren verbinden

Wie das obige Beispiel zeigt, gibt es verschiedene Konnektoren, um Bedingungen miteinander zu verbinden. Du kannst außerdem auch mehrere Bedingungen in Klammern packen und so Zuordnungen ermöglichen: „Wenn (($a == $b || $b == $c) && ($c == $d || $d == $e)) dann …“

Wenn eine der beiden Bedingungen zutreffen soll, verwendest Du einfach das || zwischen den Bedingungen. Um festzulegen, dass beide Bedingungen zutreffen sollen, also true sein müssen, nutzt Du das &&.

if-Operatoren in PHP

Häufig besteht eine if-Abfrage aus Vergleichen. Um die Vergleiche anzustellen, gibt es verschiedene Möglichkeiten:

  • Gleich
    z.B. $a == 2

    Verwende einfach den Operator ==.
  • Identisch
    $a = false;
    if ($a === false) {  }

    Die Zahl 0 wertet PHP auch als false und 1 als true. Mit dem gleich-Operator wäre es egal, ob eine Variable false oder 0 ist, mit === wird auch auf diesen Unterschied geachtet.
  • Größer als
    z.B. $a > 3
  • Größer gleich
    z.B. $a >= 3
  • Kleiner als
    z.B. $a < 3
  • Kleiner gleich
    z.B. $a <= 3

Zum Abschluss dieses recht langen Artikels noch einmal einfache Kost. Ich möchte Dir noch ein wichtiges Zeichen näher bringen und eine Kurzform.

$a = true;

if ($a) {  } // Kurze Variante 1
if ($a == true) {  } // Lange Variante 1

if (!$a) {  } // Kurze Variante 2
if ($a == false) {  } // Lange Variante 2

An Stelle von den jeweils langen Varianten können immer auch die hier dargestellten Kurzformen verwendet werden.

Das ! vor einer Bedingung negiert selbige. Die gesamte Bedingung ist in dem Fall nur dann true –  also trifft zu – wenn die Bedingungen so nicht zutreffen.

Fazit & Ausblick

In diesem ausführlichen Teil des PHP-Tutorials ging es um zwei der wichtigsten Elemente von PHP: Variablen und if-Abfragen. Du kannst nun versuchen, das gelernte Wissen anzuwenden und mit eigenen PHP-Codes Variablen zu setzen, zu verändern und diese mit if-Statements zu überprüfen.

In dem nächsten Teil des Tutorials werde ich Dir zeigen, wie du in PHP mit sogenannten Arrays arbeiten kannst.

2 Gedanken zu „4. Variablen und if-Abfragen in PHP“