Ver índice
Tipos de variables

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


Tipos de variables

Ya hemos comentado que en PHP no es necesaria una definición previa del tipo de variables. Según los valores que se les vayan asignando, las variables podrán cambiar de tipo –de modo automático– y se irán adaptando a los valores que contengan en cada momento.

Las variables en PHP pueden ser de tres tipos:

Cualquier número entero cuyo valor esté comprendido entre ± 231 será interpretado por PHP como de tipo Integer.

Si el valor de una variable es un número decimal o –siendo entero– desborda el intervalo anterior, bien por asignación directa o como resultado de una operación aritmética, PHP la convierte a tipo Double.

Cualquier variable a la que se le asigne como valor el contenido de una cadena de caracteres (letras y/o números delimitados por comillas) es interpretada por PHP como tipo String.

En el cuadro siguiente podemos ver los tres tipos de variables que utiliza PHP.

Las variables en PHP
Tipo Ejemplo Valor máximo Valor mínimo Observaciones
Integer $a=1234 2147483647 -2147483647 Cualquier valor numérico entero (dentro de este intervalo) que se asigne a una variable será convertido a este tipo
Double $a=1.23 Cualquier valor numérico decimal, o entero fuera del intervalo anterior, que se asigne a una variable la convertirá a este tipo
String $a="123" Cualquier valor entrecomillado (sean números o letras) que se asigne a una variable la convertirá a este tipo

Determinación de tipos de variables

PHP dispone de la función:

gettype(variable)

dónde variable es el nombre de la variable, devuelve una cadena de caracteres indicando el tipo de la variable que contiene.La cadena devuelta por esta función puede ser: Integer, double o string.

Dado que PHP gestiona las variables de forma automática y modifica los tipos de acuerdo con los valores que va tomando durante la ejecución del script, este valor puede ser distinto según el punto del script dónde se ejecute la función.

En esta tabla tienes algunos ejemplos de aplicación de esa función. Puedes observar –en la columna Sintaxis– que para visualizar el resultado anteponemos echo a gettype. Es decir, le indicamos a PHP que muestre el resultado obtenido al determinar el tipo de variable.

Ejemplos de determinación del tipo de una variable
Variable Sintaxis Devuelve
$a1=347echo gettype($a1)integer
$a2=2147483647echo gettype($a2)integer
$a3=-2147483647echo gettype($a3)integer
$a4=23.7678echo gettype($a4)double
$a5=3.1416echo gettype($a5)double
$a6="347"echo gettype($a6)string
$a7="3.1416"echo gettype($a7)string
$a8="Solo literal"echo gettype($a8)string
$a9="12.3 Literal con número"echo gettype($a9)string
$a10=""echo gettype($a10)string

Forzado de tipos de variable

PHP permite forzar los tipos de las variables. Eso quiere decir que se puede obligar a PHP a asignar un tipo determinado a una variable determinada, siempre que los valores que contenga estén dentro del rango del nuevo tipo de variable.

Los tipos se pueden forzar tanto en el momento de definir la variable como en un momento posterior.

Forzado y asignación simultánea de valores

Al asignar un valor a una variable, se puede forzar su tipo de la siguiente forma. Si deseamos que la variable pase a ser tipo de double basta con anteponer a su valor –entre paréntesis– tal como se indica una de las expresiones siguientes:

(double), (real) o (float).

Por ejemplo, tanto con $a=((double)45); como con $a=((float)45); o con $a=((real)45); se produciría el mismo resultado: convertir la variable $a a tipo Double.

Para forzar una variable a tipo Integer podemos anteponer a su valor una de estas expresiones:

(integer), o (int).

Por ejemplo: $b=((integer)4.5); o $b=((int)45); producirían el mismo efecto: convertir la variable $b a tipo Integer.

Para forzar una variable a tipo String basta con anteponer a su valor (entre paréntesis):

(string).

Por ejemplo: $c=((string)4.5); convertiría la variable $c a tipo String.

Forzado de tipo de variable
Variable Sintaxis Devuelve
$a1=347echo gettype((real)$a1)double
$a2=2147483647echo gettype((double)$a2)double
$a3=-2147483647echo gettype((float)$a3)double
$a4=23.7678echo gettype((int)$a4)integer
$a5=3.1416echo gettype((integer)$a5)integer
$a6="347"echo gettype((double)$a6)double
$a7="3.1416"echo gettype((int)$a7)integer
$a7="3.1416"echo gettype((string)$a7)string
$a8="Solo literal"echo gettype((double)$a8)double
$a9="12.3 Literal con número"echo gettype((int)$a9)integer

  ¡Cuidado!  

Al modificar los tipos de variables pueden modificarse sus valores.
Si forzamos a entera una variable que contenga un número decimal se perdería la parte decimal y la variable modificada solo contendría el valor de la parte entera.
Si tratamos de convertir a numérica una variable alfanumérica el nuevo valor sería cero.

Nuevos valores de la variable
Valor inicial Sintaxis Nuevo valor
$a1=347echo ((real)$a1)347
$a2=2147483647echo ((double)$a2)2147483647
$a3=-2147483647echo ((float)$a3)-2147483647
$a4=23.7678echo ((integer)$a5)23
$a5="3.1416"echo ((double)$a6)3.1416
$a6="347"echo ((int)$a7)347
$a7="3.1416"echo ((string)$a7)3.1416
$a8="Solo literal"echo ((int)$a8)0
$a9="12.3 Literal con número"echo ((double)$a9)12.3
$a9="12.3 Literal con número"echo ((int)$a9)12
$a10=""echo ((int)$a10)0

Forzado de tipos en variables ya definidas

La forma más aconsejable de forzado de tipos en variables que ya estuvieran definidas previamente, es el uso de la siguiente instrucción:

settype( var, tipo)

donde var es el nombre de la variable cuyo tipo pretendemos modificar y tipo una expresión que puede contener (entre comillas) uno de estos valores: 'double', 'integer', o 'string' según se trate de forzar a: coma flotante, entero, o cadena.

Un ejemplo podría ser este: settype($a,'integer') que convertiría a tipo entero la variable $a.

La ejecución de la instrucción settype devuelve (da como resultado) un valor que puede ser: true o false (1 ó 0) según la conversión se haya realizado con éxito o no haya podido realizarse.

Aquí tienes algunos ejemplos del uso de esa función. La tabla está organizada en bloques de tres filas que corresponden a la ejecución de tres instrucciones y a la visualización del resultado de cada una de ellas.

El resultado de settype –primera fila– solo podrá ser 1 ó 0 según la instrucción se haya ejecutado con éxito o no haya podido realizarse.

En la segunda fila comprobamos el nuevo tipo de variable obtenida mediante la ejecución de la instrucción anterior y en la tercera visualizamos los nuevos valores de la variable, que pueden haber cambiado como consecuencia del cambio de tipo.

Forzado de tipos con settype()
Variable Sintaxis Devuelve
$a1=347echo (settype($a1,'double')1
echo gettype($a1)double
echo $a1347
$a2=2147483647echo (settype($a2,'double')1
echo gettype($a2)double
echo $a22147483647
$a3=-2147483647echo settype($a3,'double')1
echo gettype($a3)double
echo $a3-2147483647
$a4=23.7678echo settype($a4,'integer')1
echo gettype($a4)integer
echo $a423
$a5=3.1416echo settype($a5,'integer')1
echo gettype($a5)integer
echo $a53
$a6="347"echo settype($a6,'double')1
echo gettype($a6)double
echo $a6347
$a7="3.1416"echo settype($a7,'integer')1
echo gettype($a7)integer
echo $a13
$a8="Solo literal"echo settype($a8,'double')1
echo gettype($a8)double
echo $a80
$a9="12.3 Literal con número"echo settype($a9,'integer')1
echo gettype($a9)integer
echo $a912

Operaciones con distintos tipos de variables

PHP permite la realización de operaciones aritméticas con cualquiera de los tres tipos de variables y adecúa el resultado al tipo más apropiado.

En la tabla puedes ver algunos ejemplos, pero, en resumen, ocurre lo siguiente:

    La tabla siguiente contiene –en cada fila– los valores asignados a dos variables (A y B) y el resultado de la suma de ambas. A continuación se recogen los tipos de variable de cada una de ellas y el del resultado. El tipo de este último –generado por PHP– estará condicionado por el valor del resultado de cada una de las operaciones.

Resultados de operaciones y tipos de variables resultantes
Valores Tipos de variables
A B A+B A B A+B
121628integerintegerinteger
1221474836472147483659integerintegerinteger
-12-2147483640-2147483652integerintegerinteger
121.245613.2456integerdoubledouble
1.24561213.2456doubleintegerdouble
1.2456123.4567124.7023doubledoubledouble
12abc12integerstringinteger
1.2456abc1.2456doublestringdouble
1212abc24integerstringinteger
1212.34567abc24.34567integerstringdouble
1.245612.34567abc13.59127doublestringdouble
1.245612.3e2abc1231.2456doublestringdouble
abc12abc12stringstringinteger
abc12.34567abc12.34567stringstringdouble
12abc12.34567abc24.34567stringstringdouble