Lección 8 de 75 15 min de lectura

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
<?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
<?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
<?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
<?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
Usa siempre === y !==

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
<?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
<?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
<?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
<?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
<?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
<?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
Operadores modernos más usados

?? (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";

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium