Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中从数据库动态创建一个开关案例?_Php_Switch Statement - Fatal编程技术网

如何在PHP中从数据库动态创建一个开关案例?

如何在PHP中从数据库动态创建一个开关案例?,php,switch-statement,Php,Switch Statement,我的问题是在PHP中创建它很容易: switch ($var) { case 1: $foo = "test"; break; case 2: $foo = "test1"; break; case 3: $foo = "test2"; break; } 如何使用数据库数据动态创建它 我们的想法如下: switch ($var) { while ($row = mys

我的问题是在PHP中创建它很容易:

switch ($var) {
    case 1:
        $foo = "test";
        break;
    case 2:
        $foo = "test1";
        break;
    case 3:
        $foo = "test2";
        break;
}
如何使用数据库数据动态创建它

我们的想法如下:

switch ($var) {
    while ($row = mysqli_fetch_assoc($result)) {
        case $row['mydata1'] :
            $foo = $row['mydata2'];
            break;
    }
}

这可能吗?

基于对上述问题的冗长评论,您要查找的是
while
循环和
if
条件:

$foo = '';  // or some default value incase no match is found
while ($row = mysqli_fetch_assoc($result)) {
    if ($row['mydata1'] == $var) {
        $foo = $row['mydata2'];
        break;
    }
}
现在还不清楚为什么您真的想要在这里设置一个
开关
,但似乎您只是在过度考虑这个过程。在逻辑层面上,您试图做的是:

  • 循环浏览一组记录
  • 将它们与变量进行比较

这是一个循环和一个条件语句。没有必要通过尝试动态生成静态代码结构来过度复杂化这一点。只需在记录上循环并将其与您的值进行比较。

基于对上述问题的冗长评论,您要查找的是
循环和
如果
条件:

$foo = '';  // or some default value incase no match is found
while ($row = mysqli_fetch_assoc($result)) {
    if ($row['mydata1'] == $var) {
        $foo = $row['mydata2'];
        break;
    }
}
现在还不清楚为什么您真的想要在这里设置一个
开关
,但似乎您只是在过度考虑这个过程。在逻辑层面上,您试图做的是:

  • 循环浏览一组记录
  • 将它们与变量进行比较

这是一个循环和一个条件语句。没有必要通过尝试动态生成静态代码结构来过度复杂化这一点。只需在记录上循环并将其与值进行比较。

您可以动态构建一个
.php
文件,然后执行该文件。从本质上讲,您所说的是编写生成代码的代码,该代码本身表示预期的逻辑。你需要把这两个步骤分开。不过,这个想法似乎充满了潜在的问题,只有在明确构建代码生成工具时才应该使用,而不仅仅是在尝试比较值时。你为什么要这么做?为什么不将值与循环中的
if
语句进行比较呢?感谢您回答@David我的代码中有一个包含10种可能情况的开关,使用开关似乎比使用10个if更为理想。现在我必须在5个不同的地方做同样的事情,似乎最好是有一个包含所有内容的数据库,在代码中每个人都有相同的功能,如果不使用数据库中的数据,我必须在5个不同的站点中放置10个切换案例。我不知道我是否解释得很好如果你循环它,只有一个if。@RubenAmezcua:你仍然可以使用数据库,仍然循环你的值,只需在
if
条件下比较这些值,而不是像这样尝试构建
开关。听起来你把两个不同的问题混在一起了,一个是试图使用动态值,另一个是试图使用
开关。解决前一个问题,后一个问题无关紧要。@David我的想法是使用一个开关,但我会尝试使用if,最后我会告诉您它是否正常工作。您可以动态构建一个
.php
文件,然后执行该文件。从本质上讲,您所说的是编写生成代码的代码,该代码本身表示预期的逻辑。你需要把这两个步骤分开。不过,这个想法似乎充满了潜在的问题,只有在明确构建代码生成工具时才应该使用,而不仅仅是在尝试比较值时。你为什么要这么做?为什么不将值与循环中的
if
语句进行比较呢?感谢您回答@David我的代码中有一个包含10种可能情况的开关,使用开关似乎比使用10个if更为理想。现在我必须在5个不同的地方做同样的事情,似乎最好是有一个包含所有内容的数据库,在代码中每个人都有相同的功能,如果不使用数据库中的数据,我必须在5个不同的站点中放置10个切换案例。我不知道我是否解释得很好如果你循环它,只有一个if。@RubenAmezcua:你仍然可以使用数据库,仍然循环你的值,只需在
if
条件下比较这些值,而不是像这样尝试构建
开关。听起来你把两个不同的问题混在一起了,一个是试图使用动态值,另一个是试图使用
开关。解决前一个问题,后一个问题无关紧要。@David我的想法是使用一个开关,但我会尝试if,最后我告诉你它是否正确我已经尝试过了,它工作了,它不是用开关,但现在我明白了你的意思,它对我有效,我已经尝试过了,它工作了,这不是一个开关,但现在我明白你的意思,它的工作为我