Un operador es algo a lo que usted entrega uno o más valores
(o expresiones, en jerga de programación) y produce otro
valor (de modo que la construcción misma se convierte en una
expresión). Así que puede pensar sobre las funciones
o construcciones que devuelven un valor (como print) como
operadores, y en aquellas que no devuelven nada (como echo) como
cualquier otra cosa.
Existen tres tipos de operadores. En primer lugar se encuentra el
operador unario, el cual opera sobre un único valor, por
ejemplo ! (el operador de negación) o ++ (el operador de
incremento). El segundo grupo se conoce como operadores binarios;
éste grupo contiene la mayoría de operadores que
soporta PHP, y una lista se encuentra disponible más
adelante en la sección Precedencia de
Operadores.
El tercer grupo consiste del operador ternario: ?:. Éste
debe ser usado para seleccionar entre dos expresiones, en base a
una tercera, en lugar de seleccionar dos sentencias o rutas de
ejecución. Rodear las expresiones ternarias con
paréntesis es una muy buena idea.
La precedencia de un operador indica qué tan "cerca" se
agrupan dos expresiones. Por ejemplo, en la expresión
1 + 5 * 3, la respuesta es
16 y no 18, ya que el
operador de multiplicación ("*") tiene una mayor
precedencia que el operador de adición ("+"). Los
paréntesis pueden ser usados para marcar la precedencia, si
resulta necesario. Por ejemplo: (1 + 5) * 3
evalúa a 18. Si la precedencia de los
operadores es la misma, se utiliza una asociación de
izquierda a derecha.
La siguiente tabla lista la precedencia de los operadores, con
aquellos de mayor precedencia listados de primeros.
Tabla 10-1. Precedencia de Operadores
| Asociatividad | Operadores |
|---|
| no-asociativo | new |
| derecha | [ |
| derecha | ! ~ ++ -- (int) (float) (string) (array) (object) @ |
| izquierda | * / % |
| izquierda | + - . |
| izquierda | << >> |
| no-asociativos | < <= > >= |
| no-asociativos | == != === !== |
| izquierda | & |
| izquierda | ^ |
| izquierda | | |
| izquierda | && |
| izquierda | || |
| izquierda | ? : |
| derecha |
= += -= *= /= .= %= &= |= ^= <<= >>=
|
| derecha | print |
| izquierda | and |
| izquierda | xor |
| izquierda | or |
| izquierda | , |
Nota:
Aunque ! tiene una mayor precedencia
que =, PHP permitirá aun expresionas
similares a la siguiente: if (!$a = foo()), en
cuyo caso la salida de foo() va a dar
a $a.