PHP Store变量没有回显?

时间:2018-10-15 11:13:01

标签: php

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

$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的值传递给开关而无需调用它?

2 个答案:

答案 0 :(得分:2)

您的问题不是回显日期,因为它绝对不会影响切换。 问题是您的while循环永远不会结束($start_date$end_date是静态的,因此start_date始终小于或等于$end_date

这样,您永无休止的while循环会阻止任何输出发送到stdout。预先回显日期只会给您一种幻想,即某些事情起作用或不起作用,但这只是一种幻想。

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

如果当前日期在开始日期和结束日期之间,如果您只想输入部分代码,则可以使用两段式如果

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

用这个代替那一刻,让我知道

答案 1 :(得分:0)

while (strtotime($start_date) <= strtotime($end_date))

这是一个无限循环。 while循环中start_date和end_date不变