An operator is something that you feed with one or more values (or
expressions, in programming jargon) which yields another value (so that the
construction itself becomes an expression). So you can think of functions
or constructions that return a value (like print) as operators and those
that return nothing (like echo) as any other thing.
There are three types of operators. Firstly there is the unary operator which
operates on only one value, for example ! (the negation operator) or ++
(the increment operator). The second group are termed binary operators; this
group contains most of the operators that PHP supports, and a list follows
below in the section Operator
Precedence.
The third group is the ternary operator: ?:. It should be used to select
between two expressions depending on a third one, rather than to select two
sentences or paths of execution. Surrounding ternary expressions with
parentheses is a very good idea.
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.
The following table lists the precedence of operators with the
lowest-precedence operators listed first.
Table 10-1. Operator Precedence
| Associativity | Operators |
|---|
| left | , |
| left | or |
| left | xor |
| left | and |
| right | print |
| right |
= += -= *= /= .= %= &= |= ^= <<= >>=
|
| left | ? : |
| left | || |
| left | && |
| left | | |
| left | ^ |
| left | & |
| non-associative | == != === !== |
| non-associative | < <= > >= |
| left | << >> |
| left | + - . |
| left | * / % |
| right | ! ~ ++ -- (int) (float) (string) (array) (object) @ |
| right | [ |
| non-associative | new |
Note:
Although ! has a higher precedence than
=, PHP will still allow expressions
similar to the following: if (!$a = foo()),
in which case the output from foo() is
put into $a.