首页 > 解决方案 > PHP Store变量没有回显?

问题描述

我正在尝试使用开关根据日期更改文本/图像,但是,由于某种原因,我实际上必须这样做,echo $current_date;否则我的开关似乎无法获取值?

$start_date = '2018-10-15';
$end_date = '2018-10-27';
$current_date = date('Y-m-d');

echo $current_date;
    while (strtotime($start_date) <= strtotime($end_date)) {
    switch($current_date) {
        case "2018-10-15":
            $text = 'todays text';
            $image = 'https://www.image.com';
            break;
        case "2018-10-16":
            $text = 'todays text2';
            $image = 'https://www.image.com2';
            break;
    }
}

echo $text;

https://repl.it/repls/EthicalJuicyLocks

从上面的 REPL 可以看出。有什么方法可以将值传递给$current_date开关而不需要调用它?

标签: php

解决方案


您的问题不是与日期相呼应,因为它对切换绝对没有影响。问题是你的while循环永远不会结束($start_date并且$end_date是静态的,所以start_date总是小于或等于$end_date

因此,您永无止境的 while 循环会阻止将任何输出发送到标准输出。事先呼应日期只会让您产生某种工作或不工作的错觉,但这只是错觉。

防止无限循环很重要。您应该始终放置一些控件以防止循环跑掉。它可以是一个计数器并在给定的迭代次数后停止,在下一次迭代之后放置的停止会产生小于给定阈值的结果变化,等等。

如果您想要的只是输入代码的一部分,如果当前日期在开始日期和结束日期之间,您可以使用两个子句 if

if ($current_date >= $start_date && $current_date <= $end_date)
{
  // Do whatever you need when you are between the boundary dates
}

用这个替换while,让我知道


推荐阅读