Autor Tema: Operadores de cortocircuito curso de PHP comparar dos variables enteras CU00818B  (Leído 2295 veces)

KOFFERO

  • Principiante
  • **
  • Mensajes: 78
    • Ver Perfil
Hola amigos, quería preguntar algo sobre este operador, se trata, cuando yo comparo dos varibles, y luego  uso el operador de corto circuito, para comparar otra dos varibles. Por ejemplo acá dejo mi código. Referencia del curso básico de programación php: CU00818B.

Código: [Seleccionar]
<?php
          $mañana 
7;
          
$siesta 12;
          
$tarde 13;
          
$noche 19;
          
$HoraDiaria = ($mañana $siesta && $tarde == $noche);
          if (
$HoraDiaria == true) {
           
echo "Es de mañana";
           } else{
           
echo "Es de tarde, pero se acerca la noche";
           }
     ?>

Bueno paso a explicar lo que es este código que realize. Hay lo que hice fue, crear cuatro variables con distintos valores, y esos valores se basan las horas del dia como la mañana, siesta, tarde y noche, tambien cree otra varible, "$HoraDiaria", para tener un orden y comparar las variables, y la comparación es asi, si mañana es menor que tarde entonces es verdadera, luego use el corto circuito &&, para comparar tarde es igual a noche dando como falso, entonces cree una condición para comparar $HoraDiaria es igual a true, y se me imprime Es de tarde, pero se acerca la noche.

Mi pregunta es, si la primera comparación de mañana es menor que siesta, entonces es verdadera todas las demas vaibles posteriores, o si es verdadera entoces tambien se compara tarde es igual a noche, dandonos como falsa, y como una es verdadera y la otra falsa, todo es falso, y cuando los comparamos en la condición HoraDiaria es igual true, nos da falsa, ya que true igual false, nos da falso, no se cumple la primera condición, pero si se cumple la segunda.

Un saludo, y gracias de ante mano por la ayuda.
« Última modificación: 28 de Diciembre 2017, 14:01 por Alex Rodríguez »
¡Me encanta aprender!

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Jorge,,, una cosa que se debe tener en cuenta es que si escribimos algo como:

Código: [Seleccionar]
   echo ' manana menor que siesta  '.($mañana < $siesta). '</br>';
   echo 'tarde igual a noche  '.($tarde==$noche). '</br>';

Obtenemos como salida

manana menor que siesta 1
tarde igual a noche

En este caso el resultado true lo muestra como 1, mientras que para un resultado false no se muestra nada por pantalla (aunque esto podría diferir según el sistema y su configuración, en algunos sistemas se podría mostrar un cero cuando se trata de un false).

En tu código tendríamos:
$mañana < $siesta es true
$tarde == $noche es false
$mañana < $siesta && $tarde == $noche es por tanto false y $HoraDiaria es false

Por tanto el resultado que debe mostrarse es Es de tarde, pero se acerca la noche

La comparación en cortocircuito con && comprueba la primera parte de la expresión ($mañana < $siesta). Si fuera falsa devolvería false y no seguiría comparando nada más. Al ser verdadera, comprueba la segunda parte ($tarde == $noche) y al ser falsa devuelve false.

Aquí ocurre lo que tú has indicado, con un && como una es verdadera y la otra falsa, todo es falso. && significa que ambas tienen que cumplir la condición. Si no cumplen ambas, todo es falso.

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".