如何在PHP中从数据库动态创建一个开关案例?
我的问题是在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
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,最后我告诉你它是否正确我已经尝试过了,它工作了,它不是用开关,但现在我明白了你的意思,它对我有效,我已经尝试过了,它工作了,这不是一个开关,但现在我明白你的意思,它的工作为我