Conversión de tipos en PHP

2020-04-22 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.

Si te ha gustado este artículo puedes invitarme a tomar una taza de café

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.