



Cambiar una variable de tipo puede hacerse de dos formas, manual o automática. La conversión automática significa que PHP buscará el tipo apropiado para el resultado de una operación dependiendo del tipo de los operandos y del operador. Si los dos operandos son del mismo tipo (ej.: dos enteros), el resultado será de ese tipo (entero), el resto se comporta de acuerdo a la siguiente tabla:
| Operadores | Resultados |
| int float | float |
| int string | int (operador matematico) |
| int string | string (concatenacion) |
| float string | float (matematico) |
$entero = 123;
$flotante = 9.231;
$texto = "10";
$a = $entero + $flotante; # (float)132.231
$a = $texto + $texto; # (int)20
$a = $texto + $entero; # (int)143
$a = $entero . $texto; # (string)"12310"
$a = $texto . $entero; # (string)"12310"
La regla para convertir un string en número es utilizar los primeros caracteres que formen un número. Si este número es entero, se convierte a entero. Si contiene notación científica se convierte a flotante.
La conversión de tipo de dato se puede hacer usando una sintaxis como la de C:
$a = (int)$flotante; # (int)9
$a = (string)$flotante; # (string)"9.231"
Los castings permitidos son:
(int) (integer) Entero
(real) (double) (float) Flotante
(string) String
(array) Arreglo
(object) Objeto
Las conversiones a tipo arreglo y objeto merecen mención aparte:
$var = "hola";
$varArr = (array)$hola; # es lo mismo que array($hola) !
echo $varArr[0]; # hola
$varObj = (object)$var;
echo $varObj->escalar; # La variable pasa a ser una propiedad del objeto
Adicionalmente, existe una forma "sucia" de alterar el tipo, mediante settype( "variable", "tipo" ). Para obtener un string con el tipo de una variable, se usa gettype("variable").
|