Tipos de Datos y Operaciones en PHP

Clase 14 de 23Curso 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
  1. 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 tipo float.
  2. En esta concatenación las variables $nombre y $apellido son de tipo String al igual que la cadena que contiene un espacio (" ") por tanto, el tipo de dato final de la variable $nombre_completo es de tipo String.
  3. 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)
  1. 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).
  2. 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.
  3. Nos encontramos ante una división, por lo tanto, el tipo de dato de la variable $promedio_maximo será convertido a float, 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.
  4. 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.