Operadores de PHP
Aprende todos los tipos de operadores de PHP — aritméticos, de comparación, lógicos, de cadena, de array, spaceship y null-coalescing — con ejemplos.
Un operador toma uno o más valores (llamados operandos) y produce un nuevo valor a partir de ellos. Los operadores son los bloques fundamentales de toda expresión que escribas en PHP — te permiten hacer aritmética, comparar valores, combinar condiciones booleanas, asignar resultados a variables y unir cadenas.
Este capítulo cubre todas las categorías de operadores de PHP con ejemplos ejecutables: aritméticos, de asignación, de comparación, lógicos, de incremento/decremento, de cadena, de array, el operador spaceship, el operador null-coalescing y cómo la precedencia de operadores determina el orden de evaluación.
Operadores Aritméticos
Los operadores aritméticos realizan las operaciones matemáticas habituales sobre números.
| Operador | Nombre | Ejemplo | Resultado |
|---|---|---|---|
+ | Suma | 10 + 5 | 15 |
- | Resta | 10 - 5 | 5 |
* | Multiplicación | 10 * 5 | 50 |
/ | División | 10 / 4 | 2.5 |
% | Módulo (resto) | 10 % 3 | 1 |
** | Exponenciación | 2 ** 4 | 16 |
<?php
$x = 10;
$y = 3;
echo $x + $y; // 13
echo $x - $y; // 7
echo $x * $y; // 30
echo $x / $y; // 3.3333333333333
echo $x % $y; // 1 (remainder of 10 / 3)
echo $x ** $y; // 1000 (10 to the power of 3)Nota: A diferencia de muchos lenguajes, el
/de PHP no trunca.10 / 4es2.5, no2. Usaintdiv()para la división entera. El operador%funciona con enteros; para restos con coma flotante usafmod().
Operadores de Asignación
El operador de asignación básico es = — almacena el valor de la derecha en la variable de la izquierda. Cada operador aritmético también tiene una forma combinada (compuesta) que actualiza una variable en su lugar.
| Operador | Equivale a |
|---|---|
$a += $b | $a = $a + $b |
$a -= $b | $a = $a - $b |
$a *= $b | $a = $a * $b |
$a /= $b | $a = $a / $b |
$a %= $b | $a = $a % $b |
$a .= $b | $a = $a . $b (string append) |
<?php
$total = 100;
$total += 20; // 120
$total -= 50; // 70
$total *= 2; // 140
echo $total; // 140Operadores de Comparación
Los operadores de comparación comparan dos valores y devuelven un boolean (true o false). Observa la distinción importante entre la comparación flexible (==) y la estricta (===).
| Operador | Nombre | true cuando... |
|---|---|---|
== | Igual | los valores son iguales tras la conversión de tipos |
=== | Idéntico | los valores y los tipos son iguales |
!= / <> | No igual | los valores no son iguales |
!== | No idéntico | los valores o los tipos difieren |
< | Menor que | el izquierdo es menor |
> | Mayor que | el izquierdo es mayor |
<= | Menor o igual que | |
>= | Mayor o igual que |
<?php
var_dump(10 == "10"); // bool(true) — values match after juggling
var_dump(10 === "10"); // bool(false) — int vs string, types differ
var_dump(5 != 8); // bool(true)
var_dump(5 >= 5); // bool(true)Advertencia: Prefiere
===cuando te importe el tipo.0 == "abc"esfalseen PHP moderno (8.0+), pero la comparación flexible aún tiene casos límite sorprendentes — la comparación estricta los evita.
El operador spaceship <=>
El operador spaceship compara dos valores y devuelve -1, 0 o 1. Es más útil como valor de retorno de un callback de ordenación.
<?php
echo 1 <=> 2; // -1 (left is smaller)
echo 2 <=> 2; // 0 (equal)
echo 3 <=> 2; // 1 (left is larger)Operadores Lógicos
Los operadores lógicos combinan expresiones booleanas, generalmente dentro de condiciones if.
| Operador | Nombre | true cuando... |
|---|---|---|
&& / and | Y | ambos lados son verdaderos |
|| / or | O | al menos un lado es verdadero |
! | No | el operando es falso |
xor | O exclusivo | exactamente un lado es verdadero |
<?php
$age = 25;
$hasLicense = true;
var_dump($age >= 18 && $hasLicense); // bool(true)
var_dump($age < 18 || $hasLicense); // bool(true)
var_dump(!$hasLicense); // bool(false)
&&yandse comportan igual en condiciones pero tienen precedencia diferente —and/orse unen de forma más laxa que=, lo que puede sorprenderte. Usa siempre&&y||.
PHP también realiza evaluación en cortocircuito: en $a && expensive(), si $a es false, el lado derecho nunca se evalúa.
Operadores de Incremento y Decremento
Estos operadores suman o restan 1 a una variable. Su posición (pre vs post) cambia lo que evalúa la expresión.
| Operador | Efecto |
|---|---|
++$x | Pre-incremento: incrementa y luego devuelve el nuevo valor |
$x++ | Post-incremento: devuelve el valor antiguo y luego incrementa |
--$x | Pre-decremento |
$x-- | Post-decremento |
<?php
$x = 5;
echo $x++; // 5 (prints old value, then $x becomes 6)
echo $x; // 6
echo ++$x; // 7 (increments first, then prints)Operadores de Cadena
PHP tiene dos operadores dedicados a las cadenas:
.— el operador de concatenación, une dos cadenas..=— el operador de asignación con concatenación, añade al final de la variable.
<?php
$greeting = "Hello";
$greeting .= ", World!"; // append
echo $greeting; // Hello, World!
echo "PHP" . " " . "rocks"; // PHP rocksOperadores de Array
Los operadores de array trabajan sobre arrays completos.
| Operador | Nombre | Descripción |
|---|---|---|
+ | Unión | las claves del lado derecho se añaden solo si faltan en el izquierdo |
== | Igualdad | mismos pares clave/valor |
=== | Identidad | mismos pares, mismo orden, mismos tipos |
<?php
$a = ["a" => 1, "b" => 2];
$b = ["b" => 99, "c" => 3];
print_r($a + $b);
// Array ( [a] => 1 [b] => 2 [c] => 3 )
// "b" keeps the LEFT value (2), "c" is addedOperador Null-Coalescing ??
El operador ?? devuelve su operando izquierdo si existe y no es null, de lo contrario el operando derecho. Es el reemplazo limpio para las comprobaciones con isset().
<?php
$data = ["name" => "Ann"];
$name = $data["name"] ?? "Guest"; // "Ann"
$role = $data["role"] ?? "Member"; // "Member" — key missing, no warning
echo "$name / $role"; // Ann / MemberLa asignación null-coalescing ??= asigna solo cuando la variable es actualmente null o no está definida: $config["theme"] ??= "dark";.
Precedencia de Operadores
Cuando una expresión mezcla operadores, la precedencia decide cuál se ejecuta primero, igual que en matemáticas (* antes que +). Usa paréntesis para hacer explícita la intención y anular los valores predeterminados.
<?php
echo 2 + 3 * 4; // 14 — * binds tighter than +
echo (2 + 3) * 4; // 20 — parentheses force addition firstDe mayor a menor, algunos niveles clave: **, luego !, luego * / %, luego + -, luego comparación (< > == ===), luego &&, luego ||, y finalmente =. Ante la duda, añade paréntesis — no tienen ningún coste y previenen errores.
Resumen
- Aritméticos (
+ - * / % **) operan sobre números;/devuelve un float,%devuelve el resto. - Asignación (
= += .=…) almacena y actualiza valores; las formas compuestas son abreviaciones. - Comparación (
== === != <=>) devuelve booleanos — prefiere el estricto===para evitar sorpresas por conversión de tipos. - Lógicos (
&& || !) combina condiciones y realiza cortocircuito. - Incremento/decremento (
++ --) difieren por la posición pre/post. - Cadena (
. .=) une texto; array (+ == ===) compara y fusiona arrays. ??proporciona valores predeterminados para valores ausentes; la precedencia y los paréntesis controlan el orden de evaluación.
A continuación, pon estos operadores en práctica dentro de sentencias condicionales y bucles.