W3docs

Tipos de datos en PHP

Aprende los ocho tipos de datos de PHP — int, float, bool, string, array, object, null y resource — con ejemplos, verificación de tipos y reglas de conversión.

Un tipo de dato describe qué clase de valor contiene una variable y qué operaciones son válidas sobre ella. PHP es de tipado dinámico: nunca se declara un tipo, simplemente se asigna un valor y PHP infiere el tipo a partir de él. La misma variable puede incluso cambiar de tipo durante la ejecución de un script. Entender los ocho tipos integrados — y cómo PHP convierte entre ellos — es la base para escribir código PHP predecible.

Este capítulo cubre todos los tipos de PHP, cómo inspeccionar el tipo de un valor en tiempo de ejecución y las reglas de conversión de tipos que confunden a la mayoría de los principiantes.

Los ocho tipos de datos de PHP

PHP tiene ocho tipos primitivos, agrupados en tres familias:

FamiliaTipos
Escalar (valor único)int, float, bool, string
Compuesto (colecciones)array, object
Especialnull, resource

Puedes preguntarle a PHP qué tipo tiene cualquier valor con la función gettype(), o comprobar un tipo específico con funciones como is_int(), is_string() o is_null().

<?php
$value = 42;
echo gettype($value); // integer
$value = "now I'm a string";
echo PHP_EOL . gettype($value); // string

Tipos escalares

Los tipos escalares almacenan un único valor.

Integer

Un integer es un número entero, positivo o negativo, sin punto decimal. Más información en Números PHP.

<?php
$num = 42;        // decimal
$negative = -7;
$hex = 0x1A;      // hexadecimal (26)
$binary = 0b101;  // binary (5)
echo "$num $negative $hex $binary"; // 42 -7 26 5

Float

Un float (número de punto flotante) almacena un número con punto decimal o exponente. Ten en cuenta que los floats son aproximados, por lo que nunca deben compararse para comprobar igualdad exacta.

<?php
$price = 12.99;
$scientific = 1.2e3; // 1200
echo $price + $scientific; // 1212.99

Boolean

Un boolean solo puede ser true o false. Es el tipo que producen las comparaciones y el que usan condiciones como if.

<?php
$isActive = true;
$hasError = false;
var_dump($isActive); // bool(true)

String

Un string es una secuencia de caracteres. Las cadenas entre comillas dobles interpolan variables; las de comillas simples no. Consulta Cadenas PHP para más detalles.

<?php
$name = "John";
echo "Hello, $name!";  // Hello, John!
echo PHP_EOL . 'Hello, $name!'; // Hello, $name!  (no interpolation)

Tipos compuestos

Los tipos compuestos agrupan múltiples valores.

Array

Un array almacena un mapa ordenado de pares clave/valor en una sola variable. Usa la sintaxis corta [] en PHP moderno.

<?php
$fruits = ["apple", "banana", "cherry"];
$prices = ["apple" => 1.20, "banana" => 0.50]; // associative
echo $fruits[1];          // banana
echo PHP_EOL . $prices["apple"]; // 1.2

Object

Un object es una instancia de una clase — agrupa datos (propiedades) con comportamiento (métodos). Se crea con la palabra clave new.

<?php
class Person {
    public function __construct(public string $name) {}
    public function greet(): string {
        return "Hi, I'm {$this->name}";
    }
}

$person = new Person("Ada");
echo $person->greet(); // Hi, I'm Ada

Tipos especiales

NULL

null representa una variable sin valor. Una variable es null si se le ha asignado la constante null, aún no ha sido definida o ha sido eliminada con unset(). Se comprueba con is_null() o === null.

<?php
$age = null;
var_dump(is_null($age)); // bool(true)

Resource

Un resource es una variable especial que contiene una referencia a un objeto externo, como un archivo abierto o una conexión a base de datos. No se crean directamente — funciones como fopen() los devuelven. Los resources se liberan automáticamente cuando ya no se usan.

Conversión y casting de tipos

Dado que PHP es de tipado dinámico, convierte ("hace malabarismos con") los tipos automáticamente cuando una operación lo requiere. Por ejemplo, una cadena numérica se convierte en número en operaciones aritméticas:

<?php
$result = "5" + 3; // the string "5" is converted to int 5
echo $result; // 8

Una cadena que solo comienza con dígitos (como "5 apples") genera una advertencia en PHP moderno, así que es preferible convertir de forma explícita con un cast.

Cuando necesitas control explícito, convierte un valor escribiendo el tipo destino entre paréntesis:

<?php
$text = "12.99";
$asFloat = (float) $text; // 12.99 as a float
$asInt = (int) $text;     // 12 (truncated)
var_dump($asInt); // int(12)

Presta atención a la veracidad: al convertir a bool, los valores 0, 0.0, "", "0", [] y null son todos false; casi todo lo demás es true.

<?php
var_dump((bool) "0");   // bool(false)
var_dump((bool) "0.0"); // bool(true)  — surprising!

Cuándo usar cada tipo

  • Usa int/float para cantidades y cálculos; recurre a los helpers de Números PHP para formatear.
  • Usa string para texto e identificadores.
  • Usa bool para indicadores y resultados de comparaciones.
  • Usa array para almacenar listas o mapas de valores relacionados.
  • Usa object para modelar entidades del mundo real con datos y comportamiento.
  • Usa null para indicar "sin valor aún" en lugar de un marcador ficticio como 0 o "".

Resumen

PHP infiere automáticamente el tipo de un valor a partir de lo que se asigna y soporta ocho tipos distribuidos en las familias escalar, compuesta y especial. Inspecciona tipos con gettype() y las funciones is_*, y controla las conversiones con casts explícitos. Dominar la conversión de tipos — especialmente las reglas de bool y cadenas numéricas — previene toda una clase de errores sutiles. A continuación, descubre cómo interactúan los tipos con los operadores y cómo almacenarlos en variables.

Práctica

Práctica
¿Cuáles de los siguientes son tipos de datos válidos en PHP?
¿Cuáles de los siguientes son tipos de datos válidos en PHP?
Was this page helpful?