Operadores
Los operadores te permiten realizar operaciones con valores: cálculos matemáticos, comparaciones, operaciones lógicas y más. Conocerlos bien es fundamental para escribir lógica de programación.
Operadores aritméticos
Para realizar operaciones matemáticas:
<?php
$a = 10;
$b = 3;
echo $a + $b; // 13 (suma)
echo $a - $b; // 7 (resta)
echo $a * $b; // 30 (multiplicación)
echo $a / $b; // 3.333... (división)
echo $a % $b; // 1 (módulo - resto de división)
echo $a ** $b; // 1000 (exponenciación - 10³)
// Negación
echo -$a; // -10
Operadores de asignación
<?php
$x = 10; // Asignación básica
$x += 5; // $x = $x + 5 → 15
$x -= 3; // $x = $x - 3 → 12
$x *= 2; // $x = $x * 2 → 24
$x /= 4; // $x = $x / 4 → 6
$x %= 4; // $x = $x % 4 → 2
$x **= 3; // $x = $x ** 3 → 8
// Para strings
$texto = 'Hola';
$texto .= ' Mundo'; // "Hola Mundo"
Operadores de incremento/decremento
<?php
$x = 5;
// Pre-incremento: incrementa ANTES de usar el valor
echo ++$x; // 6 (incrementa a 6, luego imprime 6)
// Post-incremento: incrementa DESPUÉS de usar el valor
echo $x++; // 6 (imprime 6, luego incrementa a 7)
echo $x; // 7
// Lo mismo para decremento
$y = 5;
echo --$y; // 4 (pre-decremento)
echo $y--; // 4 (post-decremento, luego $y = 3)
Operadores de comparación
Devuelven un booleano (true o
false):
<?php
$a = 5;
$b = '5';
$c = 10;
// Comparación débil (convierte tipos)
var_dump($a == $b); // true (5 == "5")
var_dump($a != $c); // true (5 != 10)
var_dump($a <> $c); // true (alternativa a !=)
// Comparación estricta (tipo + valor)
var_dump($a === $b); // false (int vs string)
var_dump($a !== $b); // true
// Comparaciones numéricas
var_dump($a < $c); // true
var_dump($a > $c); // false
var_dump($a <= 5); // true
var_dump($a >= 5); // true
La comparación débil (==)
puede dar resultados inesperados:
0 == "texto" es true,
"10" == "1e1" es true. Usa
comparación estricta (===)
siempre que sea posible.
Spaceship operator (PHP 7+)
Compara dos valores y devuelve -1, 0 o 1:
<?php
echo 1 <=> 2; // -1 (1 < 2)
echo 2 <=> 2; // 0 (iguales)
echo 3 <=> 2; // 1 (3 > 2)
// Muy útil para ordenar arrays
$numeros = [3, 1, 4, 1, 5];
usort($numeros, fn($a, $b) => $a <=> $b);
// [1, 1, 3, 4, 5]
Operadores lógicos
<?php
$a = true;
$b = false;
// AND - ambos deben ser true
var_dump($a && $b); // false
var_dump($a and $b); // false (alternativa, menor precedencia)
// OR - al menos uno debe ser true
var_dump($a || $b); // true
var_dump($a or $b); // true (alternativa, menor precedencia)
// NOT - invierte el valor
var_dump(!$a); // false
var_dump(!$b); // true
// XOR - exactamente uno debe ser true
var_dump($a xor $b); // true
var_dump($a xor $a); // false
Short-circuit evaluation
PHP deja de evaluar en cuanto conoce el resultado:
<?php
// Si lo primero es false, el AND ya es false
// La función no se ejecuta
$resultado = false && funcionCostosa();
// Si lo primero es true, el OR ya es true
// La función no se ejecuta
$resultado = true || funcionCostosa();
// Útil para verificaciones seguras
$user = null;
if ($user && $user->isActive()) {
// Si $user es null, isActive() NO se ejecuta
// Evita error "Call to a member function on null"
}
Operador ternario
Una forma compacta de escribir if-else:
<?php
$edad = 20;
// Sintaxis: condición ? valor_si_true : valor_si_false
$mensaje = $edad >= 18 ? "Adulto" : "Menor";
echo $mensaje; // Adulto
// Equivalente a:
if ($edad >= 18) {
$mensaje = 'Adulto';
} else {
$mensaje = 'Menor';
}
// Ternario abreviado (Elvis operator)
$nombre = '';
$display = $nombre ?: "Anónimo"; // Si $nombre es falsy, usa "Anónimo"
echo $display; // Anónimo
Null coalescing operator (PHP 7+)
Devuelve el primer valor que no sea null:
<?php
// ?? devuelve el lado izquierdo si NO es null
$nombre = null;
$display = $nombre ?? "Anónimo";
echo $display; // Anónimo
// Muy útil para valores por defecto
$config = $_GET['page'] ?? 1;
$usuario = $data['user'] ?? $defaultUser ?? "guest";
// Diferencia con Elvis (?:)
$valor = 0;
echo $valor ?: "vacío"; // "vacío" (0 es falsy)
echo $valor ?? "vacío"; // 0 (0 no es null)
// Null coalescing assignment (PHP 7.4+)
$nombre ??= "Anónimo"; // Si $nombre es null, asigna "Anónimo"
Nullsafe operator (PHP 8+)
Permite encadenar llamadas de forma segura cuando puede haber nulls:
<?php
// Sin nullsafe (PHP < 8)
$country = null;
if ($user !== null) {
if ($user->getAddress() !== null) {
$country = $user->getAddress()->getCountry();
}
}
// Con nullsafe (PHP 8+)
$country = $user?->getAddress()?->getCountry();
// Si cualquier parte es null, devuelve null sin error
?? (null coalescing),
?: (Elvis), y
?-> (nullsafe) son
operadores que usarás constantemente en
código PHP moderno. Hacen el código más
limpio y seguro.
Ejercicios
Ejercicio 1: Calculadora basica
Dados $a = 15 y
$b = 4, calcula e imprime la suma,
resta, multiplicacion, division y el resto de la
division.
Ver solucion
<?php
declare(strict_types=1);
$a = 15;
$b = 4;
echo "Suma: " . ($a + $b) . "\n";
echo "Resta: " . ($a - $b) . "\n";
echo "Multiplicacion: " . ($a * $b) . "\n";
echo "Division: " . ($a / $b) . "\n";
echo "Resto: " . ($a % $b) . "\n";
Ejercicio 2: Operador ternario
Dada una variable $nota = 7, usa el
operador ternario para asignar "Aprobado" si la
nota es mayor o igual a 5, o "Suspendido" en
caso contrario.
Ver solucion
<?php
declare(strict_types=1);
$nota = 7;
$resultado = $nota >= 5 ? 'Aprobado' : 'Suspendido';
echo "Nota: $nota - $resultado\n";
Ejercicio 3: Null coalescing
Simula la lectura de un parametro opcional. Crea
una variable $nombre con valor null
y usa el operador ?? para mostrar
"Invitado" si el nombre es null.
Ver solucion
<?php
declare(strict_types=1);
$nombre = null;
$nombreMostrar = $nombre ?? 'Invitado';
echo "Bienvenido, $nombreMostrar\n";
¿Has encontrado un error o tienes una sugerencia para mejorar esta lección?
Escríbenos¿Te está gustando el curso?
Tenemos cursos premium con proyectos reales y soporte personalizado.
Descubrir cursos premium