Cambio del tipo de las variables en PHP

  • Por
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
Nota: Se excluyen en este caso el cambio de variables a tipo Array porque la sintaxis puede resultar ambigua al expresar ese código, es decir, puede darse el caso de que una línea de código pueda significar dos cosas.
$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.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

juva

19/3/2008
Creo que hasta aqui el manual va bien, pero si se le da pasar al siguiente tema, se adelanta mucho la info que viene en ese link. Sugiero que se revise eso porfas

Raul

23/11/2014
El link esta desubicado.
Cuando se le da a este link en vez de pasar al siguiente (Variables de sistema en PHP) se adelanta mucho y así sigue haciendo lo, por favor revisen esto.

Juan

05/11/2015
Manual
Esto es un mojón. No vale para nada .