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:
- El boolean FALSE mismo
- El integer 0 (cero)
- El float 0.0 (cero)
- El valor string vacío, y el string «0»
- Un array con cero elementos
- Un object con cero variables miembro (sólo en PHP 4)
- El tipo especial NULL (incluidas variables no establecidas)
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:
- 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.
- Si la cadena no posee ninguna parte númerica se transformará a cero.
Una cadena se puede representar, comúnmente, de las siguientes maneras:
- Entrecomillado simple
- Entrecomillado doble
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:
- Se le ha asignado la constante NULL.
- No se le ha asignado un valor todavía.
- Se ha destruido con unset().
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
is_bool()
: Comprobar si un valor es booleano.is_integer()
ois_int()
: Comprobar si un valor es un número entero.is_float()
: Comprobar si un valor es número flotante.is_numeric()
: Comprobar si un valor es un número o una cadena numérica.is_string()
: Comprobar si un valor es una cadena.is_array()
: Comprobar si un valor es un arreglo.is_object()
: Comprobar si un valor es un objeto.is_null()
: Comprobar si un valor es nulo.is_resource()
: Comprobar si un valor es un recurso.