006 Tipos de datos
Tipos de datos informan al interpretador de PHP como usar los datos. Quizá Ud. se pregunta porque le importa a la computadora que tipos de datos utiliza. Considere cuan diferente se debe tratar a un número comparado a texto. PHP soporta diez tipos de datos.
Tipos de datos
Tipos escalares
Boolean - (Booleano) o verdadero o falso
Integer - (Entero) Un número entero, positivo o negativo
Float (Double) - Un número real, con un punto decimal en él
String - Una secuencia de caracteres (también conocida como una cadena, pero usaremos el termino del inglés en estas lecciones: string)
Tipos de compuestos
Array - (Matriz) una colección de valores o variables a las que se puede acceder a través de un índice
Object - (Objeto) un conjunto de datos (variables) y código (métodos o functions) que son una unidad
Callable - Un método que se puede pasar. Véase los documentos de callable para obtener más información.
Iterable - Un objeto o array cuyas propiedades se pueden iterar. Consulte los documentos de iterable para obtener más información.
Tipos especiales
Resource - (Recurso) un identificador especial para un recurso externo, como un archivo o una conexión a una base de datos. Véase los documentos de recursos para obtener más información.
NULL - (Nulo) ningún valor en absoluto.
Usted puede determinar el tipo de dato usando uno de los métodos var_dump()
o gettype()
.
<?php
// Un integer
var_dump(7);
// Salida:
// php shell code:1:
// int(7)
echo gettype(7); // salida: integer
// ^anota que con gettype(), no sale nada
// a la pantalla sin tener "echo" en frente.
// Puede tambien usar en un variable:
$var = 3;
var_dump($var); // tipo: int(3)
echo gettype($var); // tipo: integer
$var2 = "Diego Rivera";
var_dump($var2); // tipo: string(12) "Diego Rivera"
echo gettype($var2); // tipo: string
Forzado de tipos
PHP es un lenguaje de tipos dinámicos. Eso quiere decir que no requiere que el tipo de una variable sea declarada antes de que se puede usar, y que el tipo de una variable puede cambiar. Así que el tipo de una variable se define por el valor que contiene. Si contiene un string, la variable es un string. Si contiene un objeto, la variable es un objeto. Esto significa que una variable puede a veces ser cambiado de un tipo a otro. Esto se conoce como forzado de tipo o conversión de tipo.
<?php
$edad = 10; // $edad es un integer
$edad = (string) $edad; // $edad es forzado a un string y ahora es "10" (anote las comillas dobles)
Convertir de tipo es tan simple como colocar el tipo deseado en paréntesis antes del tipo de datos:
(int)
- forzado a integer(bool)
- forzado a boolean(float)
- forzado a float(string)
- forzado a string(array)
- forzado a array(object)
- forzado a objeto
PHP puede forzar a diferentes tipos dependiendo en el contexto. Hay seis contextos en que el forzado de tipos ocurrirá automáticamente. Usted puede leer más en la documentación sobre la manipulación de tipos. No entraremos en todos los contextos ahora, pero si los tratamos en lecciones futuros.
Consideramos un ejemplo para ilustrar el punto.
<?php
// Dado que tiene una variable con el tipo de objeto:
$obj = new stdClass(); // $obj es de tipo objeto
// ¿Qué pasará cuando tratamos de mostrar el objeto en la pantalla?
echo $obj;
// Luego sale el error:
// PHP Warning: Uncaught Error: Object of class stdClass could not be converted to string in php shell code:1
// Ahora suponemos que tiene una variable con un tipo de booleano:
$bool = true;
// ¿Qué pasará cuando tratamos de mostrar el booleano en la pantalla?
echo $bool;
// Esta es la salida:
// 1
PHP no automáticamente convierte el objeto a un string cuando se muestra con echo
, y sí automáticamente convierte el booleano a un string cuando se muestra con echo
.
Recursos
Retos
Maneras alternativas del forzados de tipos
Sucede que hay otra manera de forzar a integer y otra manera de forzar a string. Busca por la documentación oficial o usa google para encontrar lo que son. Una vez que los halla, trátalos de usar y compararlos a la manera descrito en esta lección. ¿Cuál prefiere?