在php / mysql的switch case中来自mysql的可变条件?

时间:2018-06-18 21:21:29

标签: php mysql

我的问题是我必须实现变量条件,这意味着用户能够在一段时间内定义一个VALUE。这个数据将存储在mysql中。 PHP用于服务器端。

FROM 2018-01-01 TO 2018-01-03 VALUE 10; 
FROM 2018-01-04 TO 2018-01-06 VALUE 20; 
DEFAULT (used if not in time gap) VALUE 100;

因此我认为开关盒可以是一种选择。但是有可能对案例进行foreach循环吗?

像:

$date = "2018-01-01";

switch ($date) {
    foreach(... as $data){
    case $data:
        //load variable
        break;
    }
    default:
        //load default values
}

也许我的方向错了 - 请等一下。

2 个答案:

答案 0 :(得分:1)

不,你的语法错了。在我能想到的所有编程语言中,不允许重叠块。开关块可以包含在环路中,或者其中的一个或多个情况中。块可以包含自己的循环。 ( switch 是一种特殊情况,因为它可能没有其他代码的 case 语句。)

您(在某种意义上)尝试在其中的if语句块内终止for循环块。

答案 1 :(得分:-2)

您的代码存在的问题是它无法维护,难以理解且效率稍低。

最简单的方法是运行一个cron作业或其他一些周期性的工作,并检查今天的日期是否属于用户在mysql数据中定义的日期区域。

您可以使用更好的SQL语句来获取数据并以稍微不同的方式存储它 - 例如:

起始日期 END_DATE

然后你的SQL结果将完成当前switch语句的所有工作(switch语句无论如何都不会按预期工作)。