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//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 tipo float.
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.
Explícitamente, nos dice que la variable $presento_examen es un integer que será convertido (casting) a tipo booleano.
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 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.
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).
Abramos un ticket a los creadores de PHP para que habran un tipo de dato llamado MICHI.
michis
michis
Para ir comenzando con PHP, las clases han sido muy buenas que he logrado entender hasta el momento todo lo mostrado.
Así me fue identificando los tipos de datos.
Solo que yo al Integer lo llame int pero de ahí en fuera todo bien :)
Me adelanto por si a alguien le gusta el tema que estoy usando, es: SynthWave '84
Así quedo mi reto:
🤓 Les vengo a recomendar una extensión de VSCode que nos ayuda a correr varios lenguajes de programación en la misma salida del editor. Se llama Code Runner y la pueden descargar aquí en el Marketplace de VSC
Das click derecho en el editor de código o seleccionas la parte del código que quieres ejecutar, y presionas en Run code
Y verás la salida de texto en la parte posterior del editor.
Espero les haya servido.
Gracias por la recomendación
Gracias
<?php
//Fácil$nombre ="Carlos";//String$apellido ="Gómez";//String$edad =18;// int$aprobado =true;// bool//Medio$promedio =(8+9.5+9+10+8)/5;//float$nombre_completo = $nombre." ".$apellido;//string$presento_examen =(bool)1;//bool(true)//Avanzado$numero_preguntas =5+"5";//int(10)$numero_respuestas ="5"+5;//int(10)$promedio_maximo = $numero_respuestas /1.0;//float(10), solo porque se divide en 1.0, si fuera 1, sería int$michis =3+"5 michis";//int(8) (con Warning)//testear resultados:var_dump($promedio_maximo);
En qué video sale Mr. =^..^= michi?>
me ha gustado como explica este profe
Excelente Curso! 👏😀
Hola, quiero saber que tipo de lenguaje de programación es el mejor para programar por ejemplo, un sistema de parqueadero o de caja registradora en una tienda, algo así por el estilo.
Muchas gracias.
Esto depende si tu aplicación es web, escritorio, móvil o hibrida.
Todas mis respuestas fueron correctas pero esta clase me dejó con una duda. El profesor dice que por ser división automáticamente PHP las entiende como float pero cuando pruebo divisiones que me dan resultados exactos los resultados usando var_dumb() me dan un int.
"El operador de división ("/") devuelve un valor flotante a menos que los dos operandos sean integers (o strings que se conviertan a integers) y los números sean divisibles, en cuyo caso será devuelto un valor integer."
Encontré la respuesta aquí.
si la division es entera , la variable es tipo int, sino , la variable es float
string(6) "Carlos"
string(5) "gomez"
int(18)
bool(true)
float(8.9)
string(12) "Carlos gomez"
bool(true)
int(10)
int(10)
float(10)
Warning: A non-numeric value encountered in C:\xampp\htdocs\reto.php on line 39
int(8)
```string(6) "Carlos"string(5) "gomez"int(18)bool(true)float(8.9)string(12) "Carlos gomez"bool(true)int(10)int(10)float(10)
Warning: A non-numeric value encountered in C:\xampp\htdocs\reto.php on line 39int(8)
Como dato extra, si uno en $promedio_maximo en vez de poner 1.0, utiliza 1, la división da exacta y el valor es integer, php cuando obtiene valores enteros como respuesta de división los convierte a integer.
// en este ejemplo da el tipo de dato //
$nombre = "Carlos";
var_dump ($nombre);
$apellido = "Gómez";
var_dump ($apellido);
$edad = 18;
var_dump ($edad);
$aprobado = true;
var_dump ($aprobado);