Los operadores son los símbolos que calculan (+, *), comparan (===, >)
y combinan condiciones (&&, ||). La mayoría son los mismos de C; las diferencias
están en la comparación, y son las que más errores causan.
"01" y "1" son textos distintos, pero como los dos parecen números, ==
los convierte y los encuentra iguales. Con códigos, RUT o contraseñas, este
comportamiento deja pasar cosas que no debería.
Igual que con number_format(), redondea en el momento de mostrar. Si redondeas
cada nota antes de promediar, el promedio final puede cambiar.
Pruébalo
Calcula el promedio de tres notas tuyas y muéstralo con un decimal
Usa % para decir si el año actual es par o impar
Compara "5" == 5 y "5" === 5 y explica el resultado antes de ejecutar
Simula un dado con random_int(1, 6) y ejecútalo varias veces
Error provocado: escribe if ($rol = "admin") y comprueba que siempre entra
Errores comunes
Síntoma
Causa
Solución
La condición siempre es verdadera
Usaste = en vez de ===
Compara con ===
Dos textos distintos salen iguales
Comparaste con == y PHP los convirtió
Usa ===
El promedio sale mal
Faltan paréntesis: la división se hizo antes que la suma
(a + b + c) / 3
DivisionByZeroError: Division by zero
Dividiste por 0 (por ejemplo, promedio de cero notas)
Revisa que el divisor no sea 0 antes de dividir
Checkpoint
Intenta responder antes de desplegar cada pregunta.
¿Cuánto da 10 + 2 * 3 y cuánto (10 + 2) * 3?
16 y 36. Sin paréntesis, la multiplicación se hace primero.
¿Por qué el curso pide comparar siempre con ===?
Porque == convierte los tipos antes de comparar y da true en casos que no
deberían ser iguales, como "1" == "01". === exige el mismo valor y el mismo
tipo.
Tienes $asistencia = 80 y $nota = 3.5. ¿Qué da $nota >= 4 || $asistencia >= 75?
true: con || basta que una de las dos sea verdadera, y la asistencia lo es.
Con && daría false.
¿Qué diferencia hay entre 17 / 5 en C y en PHP?
En C, entre enteros, da 3. En PHP da 3.4. Para obtener 3 en PHP se usa
intdiv(17, 5).