Tipos de Datos y Operaciones en PHP
Clase 14 de 23 • Curso Básico de PHP: Instalación, Fundamentos y Operadores
Resumen
Revisaremos el reto de la clase Qué es el Casting en PHP. Estaba dividido en 3 niveles y constaba en determinar los tipos de datos de una lista de variables.
Nivel Fácil
Los tipos de datos de este nivel son sencillos de determinar, puesto que son muy explícitos:
<?php
//Fácil
$nombre = "Carlos"; # String
$apellido = "Gómez"; # String
$edad = 18; # Integer
$aprobado = true; # Boolean
Nivel Medio
Tenemos las siguientes 3 variables:
<?php
//Medio
# 1.
$promedio = (8 + 9.5 + 9 + 10 + 8) / 5; # Decimal o Float
# 2.
$nombre_completo = $nombre . " " . $apellido; # String
# 3.
$presento_examen = (bool) 1; # Boolean
- Basta que haya un solo número decimal (
9.5
en este caso) o alguna división (/5
) en la operación para que se convierta la variable ($promedio
) a tipofloat
. - En esta concatenación las variables
$nombre
y$apellido
son de tipoString
al igual que la cadena que contiene un espacio (" "
) por tanto, el tipo de dato final de la variable$nombre_completo
es de tipoString
. - Explícitamente, nos dice que la variable
$presento_examen
es un integer que será convertido (casting) a tipo booleano.
Nivel Avanzado
Estos 4 casos poseen un poco más de dificultad:
<?php
//Avanzado
# 1.
$numero_preguntas = 5 + "5"; #Integer
# 2.
$numero_respuestas = "5" + 5; # Integer
# 3.
$promedio_maximo = $numero_respuestas / 1.0; # Decimal o Float
# 4.
$michis = 3 + "5 michis"; # Integer (con Warning)
- PHP, para hacer una operación matemática entre una cadena de caracteres y un número, convierte el
String
en integer siempre y cuando el valor entre las comillas sea solo un número o empiece con un número. Por tanto, el tipo de dato de$numero_preguntas
será integer después de la suma (5 + 5 = 10
). - Es un caso igual al anterior con la diferencia que la suma empieza con la cadena de caracteres (
"5"
). La variable$numero_respuestas
será de tipo integer, pues, la operación matemática es entre 2 integer. - Nos encontramos ante una división, por lo tanto, el tipo de dato de la variable
$promedio_maximo
será convertido afloat
, pues, el intérprete de PHP no sabe cuantos decimales tendrá el resultado de esta división previo a realizar la operación, por ello realiza esa conversión. - Caso particular que vimos en la clase de casting en la que descubrimos que PHP es capaz de efectuar este tipo de operaciones siempre y cuando el número dentro del
String
se encuentre al principio. Finalmente, al ser los 2 números a sumar de tipo integer (3 + 5 = 8
), el tipo de dato de$michis
será también integer. En este contexto siempre te mostrará un aviso (Warning).
Contribución creada por: Martín Álvarez.