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 al comienzo de la tabla. Los operadores en la misma l铆nea tienen la misma precedencia, en cuyo caso su asociatividad decide el orden para evaluarlos.
Tabla 15-1. Precedencia de Operadores
| Asociatividad | Operadores | Informaci贸n Adicional |
|---|---|---|
| no-asociativo | new | new |
| izquierda | [ | array() |
| no-asociativos | ++ -- | incremento/decremento |
| no-asociativos | ! ~ - (int) (float) (string) (array) (object) @ | tipos |
| izquierda | * / % | aritm茅tica |
| izquierda | + - . | aritm茅tica, y cadena |
| izquierda | << >> | manejo de bits |
| no-asociativos | < <= > >= | comparaci贸n |
| no-asociativos | == != === !== | comparaci贸n |
| izquierda | & | manejo de bits, y referencias |
| izquierda | ^ | manejo de bits |
| izquierda | | | manejo de bits |
| izquierda | && | l贸gicos |
| izquierda | || | l贸gicos |
| izquierda | ? : | ternario |
| derecha | = += -= *= /= .= %= &= |= ^= <<= >>= | asignaci贸n |
| izquierda | and | l贸gicos |
| izquierda | xor | l贸gicos |
| izquierda | or | l贸gicos |
| izquierda | , | varios usos |
La asociatividad de izquierda quiere decir que la expresi贸n es evaluada desde la izquierda a la derecha, la asociatividad de derecha quiere decir lo contrario.
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.