【问题标题】:PHP: check time and output appropriate greetingPHP:检查时间并输出适当的问候语
【发布时间】:2017-10-04 19:01:32
【问题描述】:

我正在编写一个小的 php 程序,它根据服务器上的一天中的时间打招呼。规则如下: 在 3:00:00 AM 到 11:59:59 AM 之间说早安! 在下午 12:00:00 到下午 4:59:59 之间说下午好! 在下午 5:00:00 到凌晨 2:59:59 之间说晚安!

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

 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>";
                    }
           }

我的问题是最后一个 else if。我怀疑我的逻辑有问题,所以如果有人能帮助我解决最后的情况,我会很感激,情况是在下午 5 点到凌晨 2 点 59 分之间。

谢谢! 数据库

【问题讨论】:

  • 你想把$hour &gt;= 17 &amp;&amp; $hour &lt; 3改成使用or,因为一个数字不能既大于17又小于3。当然,如果小时大于15,它永远不会命中,因为@987654323 @ 会取代它。
  • 你的逻辑是错误的。当小时是 23 时,您说“早上好”。请注意,您不必检查它是否
  • 不是 15:00 = 3:00 P.M.吗?我认为你有那个落后 03:00 = 3:00 A.M.对于早上,我认为应该是 ($hour >= 3 && $hours
  • 谢谢。$hour >= 3 && $hour

标签: php time


【解决方案1】:

我认为最简单的方法是把最后一个条件留一个简单的“else”,所以:

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>";
        }
   }

}

希望它有效。

【讨论】:

    【解决方案2】:

    我使用三元运算符来显示一天中的某个部分,并对代码稍作修改。

    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";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多