Conversión de tipos en PHP
Recordemos que PHP es un lenguaje débilmente tipado, es decir, que no controla los tipos de variables que declara. De esta manera es posible utilizar variables de cualquier tipo en un mismo escenario. El tipo de una variable en PHP cuando no es declarado, es determinado por el contexto en el cual la variable va a ser usada. A continuación veremos todas las posibles conversiones de tipo que podemos hacer en PHP.
Conversión Explícita
Este tipo de conversión puede realizarse mediante type casting y funciona de la misma manera como funciona en el lenguaje C, anteponiendo el tipo deseado entre paréntesis justo antes de la variable.
// esta variable será de tipo integer
$number = 1;
// esta variable será de tipo boolean
$bool = (boolean) $number;
echo gettype($bool); // muestra "boolean"
A continuación puedes ver una tabla de todos los posibles tipos de cast en PHP.
Expression | Final type |
---|---|
(int), (integer) | integer |
(bool), (boolean) | boolean |
(float), (double), (real) | float |
(string) | string |
(array) | array |
(object) | object |
Nota que este tipo de conversión permite que una variable sea evaluada con un tipo específico de datos. Para que la variable en sí cambie de tipo está la función settype()
.
// esta variable es de tipo string
$height = "60.5";
// ahora la convertimos en integer
settype($height, 'integer');
echo gettype($height); // muestra "integer"
Conversión Automática
La conversión automática de tipos se realiza cuando se necesita un tipo específico de datos en una expresión. Veamos el siguiente ejemplo.
// esta variable es de tipo double
$a = 1.5;
// esta variable es de tipo entero
$b = 2;
// la variable $c será de tipo double
$c = $a * $b;
echo gettype($c); // muestra "double"
PHP internamente evalúa la variable $a
como double para poder hacer la multiplicación con la variable $b
. Es por esto que el resultado de la expresión es un double también y se asigna a la variable $c
. Veamos este otro ejemplo.
// esta variable es de tipo string
$a = "3";
// esta variable es de tipo entero
$b = 2;
// la variable $c será de tipo entero
$c = $a * $b;
echo gettype($c); // muestra "integer"
PHP internamente evalúa la variable $a
como entero para poder hacer la multiplicación con la variable $b
. Es por esto que el resultado de la expresión es un entero también y se asigna a la variable $c
. Evaluemos otro contexto distinto a la multiplicación, por ejemplo la contatenación.
// esta variable es de tipo string
$text = "Resultado: ";
// esta variable es de tipo entero
$number = 200;
$ans = $text . $number;
echo gettype($c) . "\n"; // muestra "string"
echo $ans; // muestra "Resultado: 2"
En este caso, la variable $number
es convertida a string para poder concaternarse con $text
y dar el resultado a la variable $ans
.