IMPRESS CONTACT
114 PHP-Resource users online

Deutsch Englisch

# PHP Manual

## Operator Precedence

The precedence of an operator specifies how "tightly" it binds two expressions together. For example, in the expression 1 + 5 * 3, the answer is 16 and not 18 because the multiplication ("*") operator has a higher precedence than the addition ("+") operator. Parentheses may be used to force precedence, if necessary. For instance: (1 + 5) * 3 evaluates to 18.

When operators have equal precedence, their associativity decides whether they are evaluated starting from the right, or starting from the left - see the examples below.

The following table lists the operators in order of precedence, with the highest-precedence ones at the top. Operators on the same line have equal precedence, in which case associativity decides the order of evaluation.

Operator Precedence
non-associative clone new clone and new
left [ array()
right ++ -- ~ (int) (float) (string) (array) (object) (bool) @ types and increment/decrement
non-associative instanceof types
right ! logical
left * / % arithmetic
left + - . arithmetic and string
left << >> bitwise
non-associative < <= > >= comparison
non-associative == != === !== <> comparison
left & bitwise and references
left ^ bitwise
left | bitwise
left && logical
left || logical
left ? : ternary
right = += -= *= /= .= %= &= |= ^= <<= >>= => assignment
left and logical
left xor logical
left or logical
left , many uses

For operators of equal precedence, left associativity means that evaluation proceeds from left to right, and right associativity means the opposite.

Example #1 Associativity

``` <?php\$a = 3 * 3 % 5; // (3 * 3) % 5 = 4\$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2\$a = 1;\$b = 2;\$a = \$b += 3; // \$a = (\$b += 3) -> \$a = 5, \$b = 5// mixing ++ and + produces undefined behavior\$a = 1;echo ++\$a + \$a++; // may print 4 or 5?> ```
Use of parentheses, even when not strictly necessary, can often increase readability of the code.

Note:

Although = has a lower precedence than most other operators, PHP will still allow expressions similar to the following: if (!\$a = foo()), in which case the return value of foo() is put into \$a.

Write new comment

# New Tutorial entries

 Migration einer PHP 5 App auf PHP 7 Dieses PHP 7 Tutorial zeigt dir, wie du dein PHP5 Script auf PHP7 umstellst. Berni | Category: PHP PHP 7 Virtual Machine Dieser Artikel zielt darauf ab, einen Überblick über die Zend Virtual Machine, wie es in PHP 7 gefunden wird. Berni | Category: PHP plotting masters - a professional guide - Teil II Grafische Interpolation und Bestapproximation von numerischen Wertepaaren: Wir wollen Punkte auf einer Zeichenebene über verschiedene Verfahren miteinander verbinden. EVAMasters | Category: PHP