PHP Operadores


En este capítulo discutiremos la aplicación de los diferentes operadores en PHP.

En PHP, los operadores de asignación=se utilizan para asignar valores a las variables.

En PHP, los operadores aritméticos+se utilizan para sumar valores entre sí.


Operadores aritméticos de PHP

Operador Nombre Descripción Ejemplo Resultado
x + y Suma Suma de x y y 2 + 2 4
x - y Resta Diferencia de x y y 5 - 2 3
x * y Multiplicación Producto de x y y 5 * 2 10
x / y División Cociente de x y y 15 / 5 3
x % y Módulo (resto de la división) Resto de x dividido por y 5 % 2
10 % 8
10 % 2
1
2
0
-x Negación Toma el signo opuesto de x
<?php
$x = 2;
echo -$x;
?>
-2
~x Inversión binaria

Invierte x, realizando la operación "NOT" a nivel de bits. Regla de la operación:

~1=-2;   
~0=-1;
<?php
$x = 2;
echo ~$x;
?>
-3
a . b Concatenación Concatena dos cadenas "Hi" . "Ha" HiHa

El siguiente ejemplo demuestra los diferentes resultados obtenidos con diferentes operadores aritméticos:

Ejemplo

<?php $x=10; $y=6; echo ($x + $y); //Salida 16 echo '<br>'; //Salto de línea echo ($x - $y); //Salida 4 echo '<br>'; //Salto de línea echo ($x * $y); //Salida 60 echo '<br>'; //Salto de línea echo ($x / $y); //Salida 1.6666666666667 echo '<br>'; //Salto de línea echo ($x % $y); //Salida 4 echo '<br>'; //Salto de línea echo -$x; ?>

Pruébalo »

La versión PHP7+ agrega el operador de división enteraintdiv(), dicha función devuelve el valor del primer parámetro dividido entre el segundo parámetro y lo redondea (hacia abajo). Ejemplo de uso:

Ejemplo

<?php var_dump(intdiv(10, 3)); ?>

El ejemplo anterior generará la siguiente salida:

int(3)

Operadores de asignación de PHP

En PHP, el operador de asignación básico es=. Significa que el operando de la izquierda se establece al valor de la expresión de la derecha. Es decir,$x = 5el valor de $x es 5.

Operador Equivale a Descripción
x = y x = y El operando izquierdo se establece al valor de la expresión de la derecha
x += y x = x + y Suma
x -= y x = x - y Resta
x *= y x = x * y Multiplicación
x /= y x = x / y División
x %= y x = x % y Módulo (resto de la división)
a .= b a = a . b Concatena dos cadenas

El siguiente ejemplo demuestra los diferentes resultados obtenidos con diferentes operadores de asignación:

Ejemplo

<?php $x=10; echo $x; //Salida 10 $y=20; $y += 100; echo $y; //Salida 120 $z=50; $z -= 25; echo $z; //Salida 25 $i=5; $i *= 6; echo $i; //Salida 30 $j=10; $j /= 5; echo $j; //Salida 2 $k=15; $k %= 4; echo $k; //Salida 3 ?>

Pruébalo »

El siguiente ejemplo demuestra los mismos resultados obtenidos al usar diferentes operadores de cadena:

Ejemplo

<?php $a = "Hello"; $b = $a . " world!"; echo $b; //Salida Hello world! $x="Hello"; $x .= " world!"; echo $x; //Salida Hello world! ?>

Pruébalo »

Operadores de incremento/decremento de PHP

Operador Nombre Descripción
++ x Pre-incremento Incrementa x en 1 y luego devuelve x
x ++ Post-incremento Devuelve x y luego incrementa x en 1
-- x Pre-decremento Decrementa x en 1 y luego devuelve x
x -- Post-decremento Devuelve x y luego decrementa x en 1

El siguiente ejemplo demuestra los resultados obtenidos con los operadores de incremento/decremento:

Ejemplo

<?php $x=10; echo ++$x; //Salida 11 $y=10; echo $y++; //Salida 10 $z=5; echo --$z; //Salida 4 $i=5; echo $i--; //Salida 5 ?>

Pruébalo »

Operadores de comparación de PHP

Los operadores de comparación le permiten comparar dos valores:

Operador Nombre Descripción Ejemplo
x == y Igual Devuelve true si x es igual a y 5==8 devuelve false
x === y Idéntico Devuelve true si x es igual a y y tienen el mismo tipo 5==="5" devuelve false
x != y No igual Devuelve true si x no es igual a y 5!=8 devuelve true
x <> y No igual Devuelve true si x no es igual a y 5<>8 devuelve true
x !== y No idéntico Devuelve true si x no es igual a y, o si no son del mismo tipo 5!=="5" devuelve true
x > y Mayor que Devuelve true si x es mayor que y 5>8 devuelve false
x < y Menor que Devuelve true si x es menor que y 5<8 devuelve true
x >= y Mayor o igual que Devuelve true si x es mayor o igual que y 5>=8 devuelve false
x <= y Menor o igual que Devuelve true si x es menor o igual que y 5<=8 devuelve true

El siguiente ejemplo demuestra los diferentes resultados obtenidos con algunos operadores de comparación:

Ejemplo

<?php $x=100; $y="100"; var_dump($x == $y); echo "<br>"; var_dump($x === $y); echo "<br>"; var_dump($x != $y); echo "<br>"; var_dump($x !== $y); echo "<br>"; $a=50; $b=90; var_dump($a > $b); echo "<br>"; var_dump($a < $b); ?>

Pruébalo »

Operadores lógicos de PHP

Operador Nombre Descripción Ejemplo
x and y y Devuelve true si x e y son ambos true x=6
y=3
(x < 10 and y > 1) devuelve true
x or y o Devuelve true si al menos uno de x e y es true x=6
y=3
(x==6 or y==5) devuelve true
x xor y Xor Devuelve true si solo uno de x e y es true x=6
y=3
(x==6 xor y==3) devuelve false
x && y y Devuelve true si x e y son ambos true x=6
y=3
(x < 10 && y > 1) devuelve true
x || y o Devuelve true si al menos uno de x e y es true x=6
y=3
(x==5 || y==5) devuelve false
! x No Devuelve true si x no es true x=6
y=3
!(x==y) devuelve true

Operadores de arrays de PHP

Operador Nombre Descripción
x + y Unión Unión de x y y
x == y Igual Devuelve true si x e y tienen los mismos pares clave/valor
x === y Idéntico Devuelve true si x e y tienen los mismos pares clave/valor, en el mismo orden y del mismo tipo
x != y No igual Devuelve true si x no es igual a y
x <> y No igual Devuelve true si x no es igual a y
x !== y No idéntico Devuelve true si x no es igual a y

El siguiente ejemplo demuestra los diferentes resultados obtenidos con algunos operadores de arrays:

Ejemplo

<?php $x = array("a" => "red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; //Combinación de los arrays $x y $y var_dump($z); var_dump($x == $y); var_dump($x === $y); var_dump($x != $y); var_dump($x <> $y); var_dump($x !== $y); ?>

Pruébalo »

Operador ternario

Otro operador condicional es el operador "?:" (o ternario).

Sintaxis

(expr1) ? (expr2) : (expr3) 

El valor es expr2 cuando expr1 se evalúa como TRUE, y expr3 cuando expr1 se evalúa como FALSE.

Desde PHP 5.3, se puede omitir la parte central del operador ternario. La expresión expr1 ?: expr3 devuelve expr1 si expr1 se evalúa como TRUE; de lo contrario, devuelve expr3.

Ejemplo

En el siguiente ejemplo se comprueba si la solicitud $_GET contiene el valor user; si lo tiene, devuelve $_GET['user']; de lo contrario, devuelve nobody:

Ejemplo

<?php //Escritura normal $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; echo $username, PHP_EOL; //Escritura en PHP 5.3+ $username = $_GET['user'] ?: 'nobody'; echo $username, PHP_EOL; ?>

Nota:PHP_EOLEs un salto de línea, compatible con más plataformas.

En PHP7+ se añadió el operador de fusión NULL??, como en el siguiente ejemplo:

Ejemplo

<?php //Si $_GET['user'] no existe, devuelve 'nobody'; de lo contrario, devuelve el valor de $_GET['user']. $username = $_GET['user'] ?? 'nobody'; //Operador ternario similar $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>

Operador de comparación combinado (PHP7+)

PHP7+ admite el operador de comparación combinado (combined comparison operator), también llamado operador nave espacial, cuyo símbolo es<=>. El operador de comparación combinado puede implementar fácilmente la comparación de dos variables; por supuesto, no se limita a la comparación de datos numéricos.

El formato de sintaxis es el siguiente:

$c = $a <=> $b;

Se interpreta de la siguiente manera:

  • Si $a > $b, entonces$cel valor de ... es1。
  • Si$a == $b, entonces$cel valor de ... es0。
  • Si$a < $b, entonces$cel valor de ... es-1。

El ejemplo es el siguiente:

Ejemplo

<?php //Entero echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 //Flotante echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 //Cadena echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1 echo "b" <=> "a"; // 1 ?>

Precedencia de operadores

La siguiente tabla enumera los operadores de mayor a menor precedencia. Los operadores en la misma línea tienen la misma precedencia; en este caso, su asociatividad determina el orden de evaluación.

Nota: izquierda = de izquierda a derecha, derecha = de derecha a izquierda.

Asociatividad Operador Información adicional
Ninguno clone new clone y new
izquierda [ array()
derecha ++ -- ~ (int) (float) (string) (array) (object) (bool) @ Tipos y incremento/decremento
Ninguno instanceof Tipos
derecha ! Operadores lógicos
izquierda * / % Operadores aritméticos
izquierda + – . Operadores aritméticos y operadores de cadena
izquierda << >> Operadores de bits
Ninguno == != === !== <> Operadores de comparación
izquierda & Operadores de bits y referencias
izquierda ^ Operadores de bits
izquierda | Operadores de bits
izquierda && Operadores lógicos
izquierda || Operadores lógicos
izquierda ? : Operador ternario
derecha = += -= *= /= .= %= &= |= ^= <<= >>= => Operadores de asignación
izquierda and Operadores lógicos
izquierda xor Operadores lógicos
izquierda or Operadores lógicos
izquierda , Se utiliza en varios lugares

En la precedencia de operadores, or y ||, && y and son operadores lógicos; tienen el mismo efecto, pero su precedencia es diferente.

Ejemplo

<?php //Precedencia: && > = > and //Precedencia: || > = > or $a = 3; $b = false; $c = $a or $b; var_dump($c); //Aquí $c es un valor int 3, no un valor booleano true $d = $a || $b; var_dump($d); //Aquí $d es el valor booleano true ?>

El resultado del ejemplo anterior es:

int(3)
bool(true)

Uso de paréntesis

Podemos usar el emparejamiento de paréntesis para indicar claramente el orden de las operaciones, en lugar de depender de la precedencia y la asociatividad de los operadores; esto generalmente aumenta la legibilidad del código.

Ejemplo

<?php //Los paréntesis tienen prioridad en la operación $a = 1; $b = 2; $c = 3; $d = $a + $b * $c; echo $d; echo "\n"; $e = ($a + $b) * $c; //Usar paréntesis echo $e; echo "\n"; ?>

El resultado del ejemplo anterior es:

7
9
Otras extensiones