PHP Inkrement- und Dekrement-Operationen

In PHP müssen häufig Zahlen hoch- und runtergezählt werden. In der Programmierung nennt man das Inkrement (Hochzählen) und Dekrement (Runterzählen). Ein typisches Beispiel ist die Ausführung einer Anweisung, die ein bestimmtes Mal durchgeführt werden soll. Es ist damit z.B. auch möglich, die Anzahl der Login-Versuche zu begrenzen. Eine Inkrement- oder Dekrement-Operation kann man manuell vorgeben, indem man z.B. einer Variable einen um 1 höheren bzw. niedrigeren Wert zuweist.

// Um 1 höher
$var1 = $var1 + 1;

// Um 1 niedriger
$var2 = $var2 - 1;

Auch die folgende Variante ist möglich. Hierbei setzt man vor dem Zuweisungsoperator ein Plus- oder Minuszeichen.

// Um 1 höher
$var1 += 1;

// Um 1 niedriger
$var2 -= 1;

Möchte man das Intervall ändern, braucht man lediglich die Zahl nach dem Zuweisungsoperator anzupassen. Beim folgenden Beispiel wird der Variable $var1 der Wert 1 zugewiesen. Die Variable wird danach zwei Mal um 2 hochgezählt und ausgegeben. Die neuen Werte, die ausgegeben werden, sind somit 3 und 5.

$var1 = 1;

$var1 += 2;
// Ausgabe 3
echo $var1;

$var1 += 2;
// Ausgabe 5
echo $var1;

Nach dem selben Schema funktioniert das auch beim Runterzählen.

$var1 = 10;

$var1 -= 2;
// Ausgabe 8
echo $var1;

$var1 -= 2;
// Ausgabe 6
echo $var1;

Hoch- und Runterzählen mit Inkrement- und Dekrementoperatoren

Es gibt in PHP Inkrement- und Dekrementoperatoren, mit denen Zahlen jeweils um eine Stelle nach oben oder nach unten gesetzt werden können, sodass das Rechnen entfallen kann. Diese sind wie folgt.

  • Inkrement: ++
  • Dekrement: --
// Um 1 höher
$var1 = $var1++;

// Um 1 niedriger
$var2 = $var2--;

Dabei wird zwischen Post- und Prä-Inkrement bzw. -Dekrement unterschieden. Der Unterschied zwischen den beiden Varianten ist, dass beim Post-Inkrement zuerst der Wert zurückgegeben und danach um 1 hochgezählt wird. Beim Prä-Inkrement wird zuerst um 1 hochgezählt und dann der Wert zurückgegeben. Der Unterschied ist beim folgenden Code ersichtlich.

$var1 = 1;

// Post-Inkrement, Ausgabe 1
echo $var1++;


$var2 = 2;

// Prä-Inkrement, Ausgabe 3
echo ++$var2;

Bei $var1 wird der Wert 1 ausgegeben, weil es sich hierbei um Post-Inkrement handelt und das Hochzählen nach der Rückgabe des Werts erfolgt. Bei $var2 handelt es sich um Prä-Inkrement und das Hochzählen des Werts erfolgt vor der Rückgabe des Werts. Die Ausgabe bei $var2 ist daher 3. Analog dazu gibt es auch Post- und Prä-Dekrementoperatoren, mit denen die Werte vor und nach der Rückgabe runtergezählt werden.

$var1 = 1;

// Post-Dekrement, Ausgabe 1
echo $var1--;


$var2 = 2;

// Prä-Dekrement, Ausgabe 1
echo --$var2;

Dieser kleine Unterschied zwischen Post- und Prä-Inkrement bzw. -Dekrement ist von entscheidender Bedeutung.