2017-10-04 20 views
0

我正在写一个小型的php程序,根据服务器上的时间来打招呼。规则如下: 上午3:00:00至上午11:59:59说,早上好! 下午12:00:00至下午4:59:59说下午好! 下午5:00:00到2:59:59说晚安!PHP:检查时间并输出合适的问候

首先,为了简单起见,我决定使用军事时间。我的程序如下:

function greetingWord() 

       $hour = date("G"); 

       if($hour >= 15 && $hour < 24) 
       { 
        echo "<p>Good Morning. Today is: </p>"; 
       } else if($hour >= 12 && $hour < 17) 
        { 
         echo "<p>Good afternoon. Today is: </p>"; 
        } 
        else if($hour >= 17 && $hour < 3) 
        { 
         echo "<p>Good evening. Today is: </p>"; 
        } 
      } 

我的问题就认为去年否则,如果。我怀疑那里的逻辑有问题,所以如果有人能帮助我解决最后的情况,那么我就会知道它的情况,例如下午5点到上午2:59。

谢谢! DB

+1

您想要更改'$ hour> = 17 && $ hour <3'来使用,或者因为一个数字不能大于17且小于3。当然,如果小时大于15,因为'if($ hour> = 15 && $ hour <24)'将取代它。 – aynber

+0

你逻辑错了。当小时是23时,你说“早上好”。并且注意你不必检查它是否<24,因为它不可能。 –

+1

是不是15:00 =下午3:00?我认为你有那种落后的03:00 = 3:00 A.M.上午3点,我认为它应该是($ hour> = 3 && $ hours <12)3点。上午11:59 –

回答

1

我认为这样做是在离开最后一个条件用一个简单的“别人”,所以最简单的方法:

function greetingWord(){ 
    $hour = date("G"); 

    if($hour > 0 && $hour < 24){ 
     if($hour >= 3 && $hour < 12) 
     { 
      echo "<p>Good Morning. Today is: </p>"; 
     }else if($hour >= 12 && $hour < 17){ 
       echo "<p>Good afternoon. Today is: </p>"; 
     }else{ 
      echo "<p>Good evening. Today is: </p>"; 
     } 
    } 

} 

希望工程。

1

我用三元运算符显示一小部分代码的一天的一部分。

function greetingWord(int $hour): string 
{ 

    return ($hour >= 3 && $hour < 12) 
      ? "Morning: " 
      : (($hour >= 12 && $hour < 17) ? "afternoon: " : "evening:"); 
} 


foreach(range(0, 23) as $hour) { 
    echo "<p> Good " . greetingWord($hour) . " Today is: ". $hour ."</p>\n"; 
} 

//or 

echo "<p> Good " . greetingWord((int) date('G')) . " Today is: ". $hour ."</p>\n";