【问题标题】:PHP - If statement to show a special text on holidaysPHP - If 语句在假期显示特殊文本
【发布时间】:2020-02-20 17:09:35
【问题描述】:

我正在尝试找到一种方法来根据假期在 PHP 中生成特殊文本。我正在尝试 if 语句和 switch,但我无法弄清楚它的逻辑。你能告诉我怎么做吗?目标是有两行文本:

今天是星期四。

胖星期四快乐!

如果某一天没有假期,则只应显示第一行文本。

setlocale(LC_ALL, "sv_SE");
$dag = strftime('%A', time());
$datum = strftime('%D', time());

    {
    echo "Idag är det ".$dag."<br>";
    }

switch ($datum)
{
    case ($datum = '01/01/2020'):
        echo "Gott Nytt År";
    break;

    case ($datum = '01/06/2020'):
        echo "Glad Trettondedag Jul";
    break;        

    case ($datum = '02/20/2020'):
        echo "Happy Fat Thursday!";
    break;    

    default:
        echo ' ';
        break;
}

【问题讨论】:

  • 如果是英文的话会容易很多。
  • $datum = strftime('%D', time()); 返回日期,例如 02/20/20。你应该改成$datum = strftime('%m/%d/%Y', time());
  • “Happy Fat Thursday” - 那不应该是“Happy Fat Tuesday”吗?看起来像是来自 Mardi Gras 的东西。
  • 对不起,下次我会用英文写一切。是的,直到现在我才意识到日期不一致。谢谢!顺便说一句,波兰庆祝胖星期四,我想它是狂欢节的一个版本。

标签: php date if-statement switch-statement


【解决方案1】:

试试这个

我不确定您为什么在每个case 中都使用一个表达式,但是您已经将要检查的变量设置为switch 的参数,因此您只需根据具体情况输入值。

我还删除了第一个回声,因为我完全不知道为什么会出现,我已经将它移到了default 捕获中,这意味着如果没有其他case 被触发,默认将触发.

此外,从@Cadu De Castro Alves 评论开始,我将$datum 更改为:

$datum = strftime('%m/%d/%Y', time());

由于您使用的先前模式将返回两位数的年份,而不是您检查的四位数。

您可以阅读有关switch here 的更多信息。


setlocale(LC_ALL, "sv_SE");
$dag = strftime('%A', time());
$datum = strftime('%m/%d/%Y', time());

switch ($datum) {
    case '01/01/2020':
        echo "Gott Nytt År";
    break;

    case '01/06/2020':
        echo "Glad Trettondedag Jul";
    break;        

    case '02/20/2020':
        echo "Happy Fat Thursday!";
    break;    

    default:
        echo "Idag är det ".$dag."<br>";
        break;
}

【讨论】:

  • 谢谢,它现在可以正常工作了。我写了第一个回声,因为我认为这是一个应该始终存在的常量,然后我想通过使用 switch 语句创建一个异常。显然我误解了 switch 的本质,但现在我明白了。
  • 太棒了 - 如果您能将此答案标记为正确,我们将不胜感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
相关资源
最近更新 更多