libro / blog / tipos-datos-operadores-php

// fundamentos

Tipos de datos y operadores en PHP 8: lo que tienes que saber

Gustavo Arias8 min de lectura

TL;DR PHP es de tipado dinámico, pero eso no significa que puedas ignorar los tipos. Usa siempre === para comparar, activa strict_types en tus archivos y aprovecha los operadores modernos: ?? para valores por defecto, ?-> para objetos que pueden ser null y ... para desempaquetar arrays.

Variables, tipos y operadores parecen la parte aburrida de aprender un lenguaje, pero es donde nacen la mayoría de los errores difíciles de encontrar. PHP ha cambiado mucho en sus últimas versiones, y muchos tutoriales todavía enseñan hábitos de hace quince años. En el libro PHP desde cero hasta experto los fundamentos se explican desde cero; aquí tienes un resumen con la mirada puesta en PHP 8.

Variables y tipado dinámico

En PHP las variables empiezan con $ y no se declara su tipo: lo toman del valor que contienen, y puede cambiar.

<?php
$nombre = 'Ana';         // string
$edad = 31;              // int
$altura = 1.68;          // float
$activa = true;          // bool
$telefono = null;        // null: "sin valor"

var_dump($edad);         // int(31)
echo gettype($altura);   // double

$edad = 'treinta y uno'; // válido: ahora es string (y probablemente un bug)

var_dump() es tu mejor amigo al depurar: muestra el tipo y el valor exactos.

Los tipos de datos de PHP

TipoEjemploUso típico
int42Contadores, ids, cantidades
float3.14Medidas. No para dinero: usa enteros en centavos o DECIMAL en la base de datos
string'hola'Texto
booltrueBanderas, condiciones
array['a' => 1]Listas y diccionarios
nullnullAusencia de valor
objectnew DateTime()Instancias de clases

Comillas simples o dobles

<?php
$nombre = 'Ana';
echo 'Hola $nombre';      // Hola $nombre  (literal)
echo "Hola $nombre";      // Hola Ana      (interpola variables)
echo "Hola {$user['nombre']}"; // llaves para arrays y propiedades
echo 'Hola ' . $nombre;   // el punto concatena

Comparación: == vs ===

== compara valores después de convertir los tipos; === exige que también coincida el tipo. La conversión automática produce resultados sorprendentes:

<?php
var_dump(0 == '');        // false en PHP 8 (¡era true en PHP 7!)
var_dump('1' == '01');    // true: compara como números
var_dump('10' == '1e1');  // true: ambos valen 10
var_dump(100 == '1e2');   // true
var_dump(null == false);  // true

var_dump('1' === '01');   // false
var_dump(null === false); // false
Usa === y !== por defecto. Reserva == para los casos en que quieras la conversión a propósito, que son muy pocos. Lo mismo con in_array(): pasa true como tercer argumento para que compare de forma estricta.

Operadores modernos que debes usar

<?php
// ?? (null coalescing): valor por defecto si no existe o es null
$pagina = $_GET['pagina'] ?? 1;

// ??= asigna solo si la variable es null o no existe
$config['idioma'] ??= 'es';

// ?-> (nullsafe, PHP 8): no falla si el objeto es null
$ciudad = $usuario?->getDireccion()?->ciudad;

// <=> (nave espacial): -1, 0 o 1; ideal para ordenar
usort($productos, fn($a, $b) => $a['precio'] <=> $b['precio']);

// ... (spread): desempaquetar arrays
$base = ['html', 'css'];
$stack = [...$base, 'php', 'mysql'];   // ['html', 'css', 'php', 'mysql']

// ** potencia e intdiv división entera
echo 2 ** 10;          // 1024
echo intdiv(17, 5);    // 3

strict_types: tipos que se cumplen

Por defecto, si una función espera un int y le pasas "5", PHP lo convierte sin avisar. Con declare(strict_types=1) en la primera línea del archivo, esa llamada lanza un TypeError, y el error aparece donde se produce y no tres funciones después.

<?php
declare(strict_types=1);

function duplicar(int $n): int
{
    return $n * 2;
}

echo duplicar(5);    // 10
echo duplicar('5');  // TypeError: debe ser int, se recibió string

Los datos de formularios siempre llegan como string, así que conviértelos y valídalos explícitamente (por ejemplo, con filter_var($valor, FILTER_VALIDATE_INT)) antes de pasarlos a tus funciones. Profundizamos en los tipos de parámetros en funciones en PHP.

Errores comunes

Referencia: tipos y operadores en el manual oficial de PHP.

Fundamentos sólidos desde el principio

El libro PHP desde cero hasta experto explica variables, tipos de datos, operadores y estructuras de control con ejemplos pensados para principiantes absolutos.

Comprar en Amazon