PHP no requiere (o soporta) la definición explícita
de tipos en la declaración de variables; el tipo de una
variable es determinado por el contexto en el que la variable es
usada. Lo que quiere decir que si asigna un valor de cadena a la
variable $var, $var
se convierte en una cadena. Si luego asigna un valor entero a
$var, ésta se convierte en entera.
Un ejemplo de la conversión automática de tipos de
PHP es el operador de adición '+'. Si cualquiera de los
operandos es un flotante, entonces todos los operandos son
evaluados como flotantes, y el resultado será un
flotante. De otro modo, los operandos serán interpretados
como enteros, y el resultado será también un
entero. Note que este NO modifica los tipos de los operandos
mismos; el único cambio está en la forma como los
operandos son evaluados.
Si los dos últimos ejemplos lucen extraños, consulte
Conversión
de cadenas a números.
Si desea forzar que una variable sea evaluada como un cierto tipo,
consulte la sección sobre Moldeamiento de
tipos. Si desea cambiar el tipo de una variable, vea
settype().
Si quisiera probar cualquiera de los ejemplos en esta
sección, puede usar la función
var_dump().
Nota:
El comportamiento de una conversión automática a
matriz no se encuentra definido en el momento.
Ya que PHP (por razones históricas) soporta el uso de
índices en cadenas mediante desplazamientos de
posición usando la misma sintaxis que la indexación
de matrices, el ejemplo anterior lleva a un problema:
¿debería $a convertirse en una matriz con un primer
elemento "f", o debería "f" convertirse en el primer
caracter de la cadena $a?
Las versiones recientes de PHP interpretan la segunda
asignación como una identificación de
desplazamiento de cadena, así que $a se convierte en "f",
sin embargo el resultado de esta conversión
automática debe considerarse indefinido. PHP 4 introdujo
la nueva sintaxis de llaves para acceder a los caracteres de una
cadena, use esta sintaxis en lugar de la que fue presentada
anteriormente:
Vea la sección llamada Acceso a cadenas por
caracter para más información.
El moldeamiento de tipos en PHP funciona de forma muy similar a
como ocurre en C: el nombre del tipo deseado es escrito entre
paréntesis antes de la variable que debe ser moldeada.
Los moldeamiontos permitidos son:
(int), (integer) - moldeamiento a entero
(bool), (boolean) - moldeamiento a booleano
(float), (double), (real) - moldeamiento a flotante
(string) - moldeamiento a cadena
(array) - moldeamiento a matriz
(object) - moldeamiento a objeto
Note que las tabulaciones y los espacios son permitidos al
interior de los paréntesis, así que las siguientes
expresiones son funcionalmente equivalentes:
Nota:
En lugar de moldear una variable a cadena, puede también
rodear la variable de comillas dobles.
Puede que no sea obvio qué sucede exactamente cuando se
moldea entre ciertos tipos. Para más información,
consulte las secciones: