Tipos de datos

PHP maneja los tipos de datos de forma dinámica, por lo que una variable puede modificar su tipo en tiempo de ejecución.

Escalares

Boolean

Puede devolver dos tipos de valores, las constantes TRUE o FALSE. Dichos valores no distinguen mayúsculas de minúsculas.

Conversión a booleanos

Se utilizan los operadores bool o boolean, el cual no es necesario si en una estructura de control, función u operador requiere un booleano.

Es importante saber que los siguientes valores se consideran FALSE:

Los demás valores se consideran TRUE.

var_dump((bool) "");        // bool(false)
var_dump((bool) 1);         // bool(true)
var_dump((bool) -2);        // bool(true)
var_dump((bool) "foo");     // bool(true)
var_dump((bool) 2.3e5);     // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array());   // bool(false)
var_dump((bool) "false");   // bool(true)

Integer

Los integer pueden especificarse mediante notación decimal (base 10), hexadecimal (base 16), octal (base 8) o binaria (base 2), opcionalmente precedidos por un signo (- o +).

Los literales de tipo integer binarios están disponibles desde PHP 5.4.0.

Para utilizar la notación octal, se antepone al número un 0 (cero). Para utilizar la notación hexadecimal, se antepone al número 0x. Para utilizar la notación binaria, se antepone al número 0b.

$a = 1234; // número decimal
$b = -123; // un número negativo
$c = 0123; // número octal (equivale a 83 decimal)
$d = 0x1A; // número hexadecimal (equivale a 26 decimal)
$e = 0b11111111; // número binario (equivale al 255 decimal)

Float

Los números de punto flotante se pueden representar de cualquiera de las siguientes maneras:

$a = 1.234;
$b = 1.2e3;
$c = 7E-10;

Se debe tener especial cuidado con las operaciones ligadas con este tipo de dato, puede resultar en situaciones inesperadas, como el siguiente ejemplo:

$x = 8 - 6.4;  		// resulta 1.6
$y = 1.6;
var_dump($x == $y); 	// es FALSE

// Se puede corregir utilizando el redondeo
var_dump(round($x, 2) == round($y, 2)); // esto es TRUE

String

Un string, o cadena, es una serie de caracteres donde cada carácter es lo mismo que un byte. Esto significa que PHP solo admite un conjunto de 256 caracteres, y de ahí que no ofrezca soporte nativo para Unicode. Una cadena puede alcanzar hasta 2GB de tamaño. Las cadenas en PHP son mutables. Por lo cual la concatenación, la cual se realiza con el operador punto (.), no tiene el mismo alto costo que en otros lenguajes. Al transformar un string a entero o flotante pueden suceder dos cosas:

  1. Si la cadena al principio tiene una parte numérica, dicha parte se toma como número. Ejemplo: «144Un ejemplo», se covertiría en el número 144.
  2. Si la cadena no posee ninguna parte númerica se transformará a cero.

Una cadena se puede representar, comúnmente, de las siguientes maneras:

La diferencia entre estos dos, consiste en que el entrecomillado doble realiza un análisis de texto, tratando de convertir las variables internas en los valores correspondientes.

<?php 

// Entrecomillado simple
echo 'Esto es una cadena sencilla';

echo 'También se pueden incluir nuevas líneas en
un string de esta forma, ya que es
correcto hacerlo así';

// Resultado: Arnold una vez dijo: "I'll be back"
echo 'Arnold una vez dijo: "I'll be back"';

// Entrecomillado doble
$pais = 'Honduras';
echo "Bienvenidos a $pais";
// Si el texto es confuso, debe utilizarse llaves.
echo "{$pais}, es un gran pais";

Compuestos

Array

Un array en PHP es en realidad un mapa ordenado. Un mapa es un tipo de datos que asocia valores con claves. Este tipo se optimiza para varios usos diferentes; se puede emplear como un array, lista (vector), tabla asociativa (tabla hash – una implementación de un mapa), diccionario, colección, pila, cola, y posiblemente más. Ya que los valores de un array pueden ser otros arrays, también son posibles árboles y arrays multidimensionales.

Object

Los tipo object son aquellos que se crean mediante la utilización de una clase. Además PHP posee objetos genéricos de la clase estándar: sdtClass.

Especiales

NULL

El valor especial NULL representa una variable sin valor. NULL es el único valor posible del tipo null.
Una variable es considerada null si:

NULL es insensible a mayúsculas y minúsculas.

Resource

Un valor tipo resource es una variable especial, que contiene una referencia a un recurso externo. Los recursos son creados y usados por funciones especiales.

El listado que maneja PHP sobre estos tipos, se muestra aquí.

Comprobaciones de tipos de datos