PHP 4.3

2.9 Rangfolge von Operatoren

Alle Operatoren haben in PHP eine bestimmte Priorität innerhalb der Operatorenrangfolge. Diese Rangfolge entscheidet darüber, welche Operationen PHP bevorzugt bzw. nachfolgend ausführt. Einige grundlegende Regeln einer Operatorenrangfolge sind Ihnen wahrscheinlich aus der Mathematik geläufig. So werden Multiplikationen und Divisionen innerhalb einer Gleichung vor Additionen und Subtraktionen durchgeführt. PHP bildet diese Operatorenrangfolge natürlich ab und erweitert sie um eigene Regeln für PHP-spezifische Operatoren.

Ein Beispiel:

  $ergebnis = 14 + 8 * 3;

ergibt 38 und nicht 66, da PHP zuerst 8 mit 3 multipliziert und erst dann 14 hinzu addiert. Wenn wir die Rangfolge der Operatoren, die Sie bereits kennen gelernt haben also in einer Liste abbilden, ergibt sich folgende Rangfolge:

Operator

 ++   --           
 *   /   %         
 +   -   .         
 =   +=   -=   *=    /=   %=    .=  
 ,             

Wie Sie sehen, besitzt die Inkrementierung und Dekrementierung bisher den höchsten Rang, gefolgt von Multiplikation, Division, und Modulus, die jeweils gleichrangig sind. Anschließend folgen Addition und Subtraktion, die mit dem Punkt-Operator den gleichen Rang einnehmen, usw. Dass sich aus der Gleichrangigkeit von + und . nicht selten ein Problem ergibt, zeigt folgendes Beispiel

<?

  $a = 1;
  $b = 2;

  echo "Sie haben " . 1 + 2 . " Flaschen Rotwein bestellt.<br>";
  echo "Sie haben " . $a + $b . " Flaschen Rotwein bestellt.<br>";

?>

Browserausgabe

  2 Flaschen Rotwein bestellt.
  2 Flaschen Rotwein bestellt.

Hier wird sowohl bei der Angabe von Werten als auch bei Variablen der erste Teil des Satzes komplett ignoriert und nicht die beabsichtigte Berechnung durchgeführt. Wir müssen also dafür sorgen, dass die Berechnung der Menge eine höheren Rang einnimmt, als die Verknüpfung der Satzbestandteile durch den Punktoperator. Ähnlich wie in der Mathematik verwenden wir dazu ein Paar runder Klammern. Diese haben einen höheren Rang als der Punktoperator und sorgen deshalb für eine vorgezogene Berechnung der Anzahl:

<?

  $a = 1;
  $b = 2;

  echo "Sie haben " . (1 + 2) . " Flaschen Rotwein bestellt.<br>";
  echo "Sie haben " . ($a + $b) . " Flaschen Rotwein bestellt.<br>";

?>

Browserausgabe

   Sie haben 3 Flaschen Rotwein bestellt.
   Sie haben 3 Flaschen Rotwein bestellt.

Nun wird nicht nur die Anzahl berechnet, sondern auch der vollständige Satz angezeigt.

Kommentare (0)

Ihr Kommentar

Name