Í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 AJAXTipos 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=347 | echo gettype($a1) | integer |
| $a2=2147483647 | echo gettype($a2) | integer |
| $a3=-2147483647 | echo gettype($a3) | integer |
| $a4=23.7678 | echo gettype($a4) | double |
| $a5=3.1416 | echo 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=347 | echo gettype((real)$a1) | double |
| $a2=2147483647 | echo gettype((double)$a2) | double |
| $a3=-2147483647 | echo gettype((float)$a3) | double |
| $a4=23.7678 | echo gettype((int)$a4) | integer |
| $a5=3.1416 | echo 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 |
| Nuevos valores de la variable | ||
| Valor inicial | Sintaxis | Nuevo valor |
| $a1=347 | echo ((real)$a1) | 347 |
| $a2=2147483647 | echo ((double)$a2) | 2147483647 |
| $a3=-2147483647 | echo ((float)$a3) | -2147483647 |
| $a4=23.7678 | echo ((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=347 | echo (settype($a1,'double') | 1 |
| echo gettype($a1) | double | |
| echo $a1 | 347 | |
| $a2=2147483647 | echo (settype($a2,'double') | 1 |
| echo gettype($a2) | double | |
| echo $a2 | 2147483647 | |
| $a3=-2147483647 | echo settype($a3,'double') | 1 |
| echo gettype($a3) | double | |
| echo $a3 | -2147483647 | |
| $a4=23.7678 | echo settype($a4,'integer') | 1 |
| echo gettype($a4) | integer | |
| echo $a4 | 23 | |
| $a5=3.1416 | echo settype($a5,'integer') | 1 |
| echo gettype($a5) | integer | |
| echo $a5 | 3 | |
| $a6="347" | echo settype($a6,'double') | 1 |
| echo gettype($a6) | double | |
| echo $a6 | 347 | |
| $a7="3.1416" | echo settype($a7,'integer') | 1 |
| echo gettype($a7) | integer | |
| echo $a1 | 3 | |
| $a8="Solo literal" | echo settype($a8,'double') | 1 |
| echo gettype($a8) | double | |
| echo $a8 | 0 | |
| $a9="12.3 Literal con número" | echo settype($a9,'integer') | 1 |
| echo gettype($a9) | integer | |
| echo $a9 | 12 | |
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:
| Resultados de operaciones y tipos de variables resultantes | |||||
| Valores | Tipos de variables | ||||
| A | B | A+B | A | B | A+B |
| 12 | 16 | 28 | integer | integer | integer |
| 12 | 2147483647 | 2147483659 | integer | integer | integer |
| -12 | -2147483640 | -2147483652 | integer | integer | integer |
| 12 | 1.2456 | 13.2456 | integer | double | double |
| 1.2456 | 12 | 13.2456 | double | integer | double |
| 1.2456 | 123.4567 | 124.7023 | double | double | double |
| 12 | abc | 12 | integer | string | integer |
| 1.2456 | abc | 1.2456 | double | string | double |
| 12 | 12abc | 24 | integer | string | integer |
| 12 | 12.34567abc | 24.34567 | integer | string | double |
| 1.2456 | 12.34567abc | 13.59127 | double | string | double |
| 1.2456 | 12.3e2abc | 1231.2456 | double | string | double |
| abc | 12abc | 12 | string | string | integer |
| abc | 12.34567abc | 12.34567 | string | string | double |
| 12abc | 12.34567abc | 24.34567 | string | string | double |