Formas en que una variable de PHP puede ver variado su tipo.
En el artículo anterior del Manual de PHP comenzamos a explicar cómo se trabaja con variables en este lenguaje. Ya comentamos que PHP tiene un tipado dinámico, pero hay algunas cosas que puedes necesitar hacer en el día a día y que debes saber para cubrir el conocimiento fundamental de variables y tipos de datos en PHP.
PHP no requiere que indiquemos el tipo que va a contener una variable, sino que lo deduce del valor que asignemos a la variable. Asimismo, se encarga de actualizar automáticamente el tipo de la variable cada vez que le asignamos un nuevo valor. Esto es básicamente lo que se llama "tipado dinámico" o "tipado débil", característica no sólo de PHP, sino de muchos otros lenguajes como Javascript.
Por ello, para cambiar el tipo de una variable simplemente le asignamos un valor con un nuevo tipo.
$cadena = 'esto es una cadena';
$cadena = 34 //La variable $cadena cambió de tipo
$a = "1";
//$a es una cadena
$a[0] = "f";
//¿Estamos editando el índice de la cadena o forzando a array?
En este artículo veremos dos tipos posibles de alteración del tipo de variables, más allá del propio que hace PHP con el comportamiento derivado de su tipado dinámico. A esta operación se la conoce habitualmente como "Forzado".
Forzado
Variar el tipo de datos que contiene una variable con el tiempo es una cosa que no siempre es aconsejable, porque si no tenemos certeza de si una variable contiene un dato de un tipo u otro, a veces los resultados obtenidos pueden no ser los esperados.
Para evitar problemas en muchas ocasiones puede venir bien realizar el forzado de una variable a un tipo en concreto, de manera explícita, lo que nos permitirá saber que cuando llega el flujo del programa a un punto dado, aquella variable tendrá el tipo de datos esperado. En PHP existen diversas maneras de forzar una variable a un tipo.
Establecer el tipo con settype()
Podemos forzar una variable para que cambie de tipo con la función settype().
settype($variable,"nuevo_tipo");
la función setType() actualiza el tipo de $variable a "nuevo_tipo" y devuelve un boleano indicando si hubo éxito o no en la conversión.
Entre "nuevo_tipo" tenemos:
- "integer"
- "double"
- "string"
- "array"
- "object"
Casting de variables
Hay otra manera de realizar un forzado, para que una variable se comporte como un tipo determinado. Ahora vamos a ver otro mecanismo de forzado que es similar al de otros lenguajes como C o Java.
$variable = "23";
$variable = (int) $variable;
Los forzados permitidos son:
- (int), (integer) - fuerza a entero (integer)
- (real), (double), (float) - fuerza a número con decimales (coma flotante)
- (string) - fuerza a cadena (string)
- (array) - fuerza a array (array)
- (object) - fuerza a objeto (object)
- (unser) - fuerza a null
- (binary) - fuerza a "binary string"
Conclusión
Si estás comenzando con PHP y la programación en general, quizás este tema del cambio de tipo y el forzado puede parecer una información un tanto avanzada o sin una aplicación clara. Si es así no te preocupes demasiado por ahora, pero ten presente que tú como programador eres capaz de cambiar los tipos de las variables, para que tus programas hagan exactamente lo que tú deseas.
Cuando hay una incongruencia de tipos PHP siempre intenta hacer lo más adecuado con el código que ejecuta, pero no siempre la solución que él toma es la que tú pudieras pensar. En esos casos, el forzado será realmente importante. Sin duda cuando tengas más experiencia con el lenguaje estas situaciones irán apareciendo.
Miguel Angel Alvarez
Fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Com...