Type juggling
PHP
no
requiere
(
o
soporta
)
la
declaración
explícita
del
tipo
en
la
declaración
de
variables
;
el
tipo
de
una
variable
se
determina
por
el
contexto
en
el
que
se
usa
esa
variable
.
Esto
quiere
decir
que
si
se
asigna
un
valor
de
cadena
a
la
variable
var
,
var
se
convierte
en
una
cadena
.
Si
después
se
asigna
un
valor
entero
a
la
variable
var
,
se
convierte
en
una
variable
entera
.
Un
ejemplo
de
conversión
de
tipo
automática
en
PHP3
es
el
operador
suma
'
+
'
.
Si
cualquiera
de
los
operandos
es
un
doble
,
entonces
todos
los
operandos
se
evalúan
como
dobles
,
y
el
resultado
será
un
doble
.
En
caso
contrario
,
los
operandos
se
interpretarán
como
enteros
,
y
el
resultado
será
también
un
entero
.
Nótese
que
esto
NO
cambia
los
tipos
de
los
operandos
propiamente
dichos
;
el
único
cambio
está
en
cómo
se
evalúan
los
operandos
.
Si
los
últimos
dos
ejemplos
anteriores
parecen
confusos
,
vea
Conversión
de
cadenas
.
Si
se
desea
obligar
a
que
una
variable
sea
evaluada
con
un
tipo
concreto
,
mire
la
sección
Forzado
de
tipos
.
Si
se
desea
cambiar
el
tipo
de
una
variable
,
vea
la
función
settype(
)
.
Si
quisiese
probar
cualquiera
de
los
ejemplos
de
esta
sección
,
puede
cortar
y
pegar
los
ejemplos
e
insertar
la
siguiente
línea
para
ver
por
sí
mismo
lo
que
va
ocurriendo
:
Nota
:
La
posibilidad
de
una
conversión
automática
a
array
no
está
definida
actualmente
.
Aunque
el
ejemplo
anterior
puede
parecer
que
claramente
debería
resultar
en
que
$a
se
convierta
en
un
array
,
el
primer
elemento
del
cual
es
'
f
'
,
consideremos
esto
:
Dado
que
PHP
soporta
indexación
en
las
cadenas
vía
offsets
usando
la
misma
sintaxis
que
la
indexación
de
arrays
,
el
ejemplo
anterior
nos
conduce
a
un
problema
:
¿debería
convertirse
$a
en
un
array
cuyo
primer
elemento
sea
"
f"
,
o
debería
convertirse
"f
"
en
el
primer
carácter
de
la
cadena
$a
?
Por
esta
razón
,
tanto
en
PHP
3.0.12
como
en
PHP
4.0b3-RC4
,
el
resultado
de
esta
conversión
automática
se
considera
que
no
está
definido
.
Los
parches
se
están
discutiendo
,
de
todas
formas
.
Forzado de tipos
El
forzado
de
tipos
en
PHP
funciona
como
en
C
:
el
nombre
del
tipo
deseado
se
escribe
entre
paréntesis
antes
de
la
variable
a
la
que
se
pretende
forzar
.
Los
forzados
de
tipo
permitidos
son
:
-
(
int)
,
(integer
)
-
fuerza
a
entero
(integer
)
-
(
real)
,
(double)
,
(float
)
-
fuerza
a
doble
(double
)
-
(
string
)
-
fuerza
a
cadena
(string
)
-
(
array
)
-
fuerza
a
array
(array
)
-
(
object
)
-
fuerza
a
objeto
(object
)
Nótese
que
las
tabulaciones
y
espacios
se
permiten
dentro
de
los
paréntesis
,
así
que
los
siguientes
ejemplos
son
funcionalmente
equivalentes
:
Puede
no
ser
obvio
que
ocurrirá
cuando
se
fuerce
entre
ciertos
tipos
.
Por
ejemplo
,
lo
siguiente
debería
ser
tenido
en
cuenta
.
Cuando
se
fuerza
el
cambio
de
un
escalar
o
una
variable
de
cadena
a
un
array
,
la
variable
se
convertirá
en
el
primer
elemento
del
array
:
Cuando
se
fuerza
el
tipo
de
una
variable
escalar
o
de
una
cadena
a
un
objeto
,
la
variable
se
convertirá
en
un
atributo
del
objeto
;
el
nombre
del
atributo
será
'scalar
'
: