Operadores
En las tablas que se muestran a continuación se resumen los operadores que podremos utilizar en nuestro código PHP. Como se puede comprobar, PHP utiliza para los operadores una sintaxis muy parecida a la de C, con alguna particularidad, como por ejemplo el operador _idéntico_, que devuelve _true _ no solo si el valor de las dos variables implicadas es el mismo, sino que además si el tipo también lo es.
Operadores aritméticos
Operador | Nombre | Ejemplo |
---|---|---|
+ | Suma | $a + $b |
- | Resta | $a - $b |
* | Producto | $a * $b |
/ | División | $a / $b |
% | Módulo | $a % $b |
Operadores de incremento/decremento
Ejemplo | Nombre | Efecto |
---|---|---|
++$a | Pre-incremento | Incrementa $a en uno, y luego devuelve $a |
$a++ | Post-incremento | Devuelve $a, y luego incrementa $a en uno |
--$a | Pre-decremento | Decrementa $a en uno, y luego devuelve $a |
$a-- | Post-decremento | Devuelve $a, y luego decrementa $a en uno |
Operadores binarios
Ejemplo | Nombre | Efecto |
---|---|---|
$a & $b | Y | Los bits que estén activos tanto en $a como en $b son activados |
$a | $b | O | Los bits que estén activos en $a o en $b son activados |
$a ^ $b | O exclusivo (Xor) | Los bits que estén activos en $a o en $b, pero no en ambos,son activados |
~$a | No | Los bits que estén activos en $a son desactivados y viceversa |
$a << $b | Desplazamiento a la izquierda | Desplaza los bits de $a un total de $b pasos a la izquierda (cada paso a la izquierda es equivalente a multiplicar por dos) |
$a >> $b | Desplazamiento a la derecha | Desplaza los bits de $a un total de $b pasos a la derecha (cada paso a la derecha es equivalente a dividir entre dos) |
Operadores lógicos. Existen dos versiones de los operadores Y y O porque tienen distinta precedencia (ver más adelante)
Ejemplo | Nombre | Efecto |
---|---|---|
$a and $b | Y | true si tanto $a como $b son true |
$a or $b | O | true si $a o $b son true |
$a xor $b | O exclusivo (Xor) | true si $a o $b son true, pero no ambos |
!$a | No | true si $a no es true |
$a && $b | Y | true si tanto $a como $b son true |
$a || $b | O | true si $a o $b son true |
Operadores de comparación
Ejemplo | Nombre | Efecto |
---|---|---|
$a == $b | Igual | true si $a es igual a $b |
$a === $b | Idéntico | true si $a es igual a $b y además son del mismo tipo |
$a != $b | Diferente | true si $a no es igual a $b |
$a <> $b | Diferente | true si $a no es igual a $b |
$a !== $b | No idéntico | true si $a no es igual a $b, o si no son del mismo tipo |
$a < $b | Menor que | true si $a es estrictamente menor que $b |
$a > $b | Mayor que | true si $a es estrictamente mayor que $b |
$a <= $b | Menor o igual que | true si $a es menor o igual que $b |
$a >= $b | Mayor o igual que | true si $a es mayor o igual que $b |
Un operador adicional que también nos encontramos en el lenguaje C es el operador condicional ?, que utiliza la siguiente sintaxis:
(expresion1) ? (expresion2) : (expresion3)
El significado de esta sentencia es el siguiente: se evalúa la expresión _expresion1_, evaluándose _expresion2_ a continuación si el resultado fue _true_, o evaluándose _expresion3_ en caso contrario.
Un operador especial es el operador de control de errores, representado por @. Dicho operador, si es colocado al principio de una expresión, llamada a función, sentencia _include()_, etc., hace que se ignore cualquier error producido en esa operación:
$a = @(57/0);
Es totalmente desaconsejable utilizarlo en la definición de funciones o clases, o en instrucciones del tipo _if_, _foreach_, etc., ya que puede ocultar posibles causas de error en el script.
En el caso en el que tuviéramos habilitado el parámetro _track_errors_ en el fichero de configuración _php.ini_, PHP almacenará el último mensaje de error en la variable _$php_errormsg_ (esta variable se sobrescribe con cada error nuevo).
Un dato a tener en cuenta a la hora de combinar operadores para construir expresiones es la **precedencia** de los operadores, es decir, el orden en el que se irán aplicando los operadores para evaluar la expresión y obtener el resultado final.
La siguiente tabla muestra la precedencia de los operadores en PHP, desde los de mayor precedencia (los que se aplicarán antes) a los de menor. Podremos cambiar el orden de precedencia de los operadores utilizando los paréntesis, como en cualquier otro lenguaje de programación. La tabla también muestra la asociatividad de los operadores, es decir, el orden en el que se procesarán los operadores de la misma precedencia
que encontremos en una expresión.
Precedencia y asociatividad de los operadores en PHP
Asociatividad | Precedencia |
---|---|
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 | |
Izquierda | and |
Izquierda | or |
Izquierda | xor |
Izquierda | , |