在PHP中,在使用switch case循环时,我可以使用for循环来迭代这些情况吗? 例如
switch .....
foreach($xyz as $abc)
{
CASE:$abc
}
default;
更新
我从DB获取值,此值是表的名称,通过使用“case”我想根据表名执行特定查询。
这可能吗?
答案 0 :(得分:2)
我认为您不能以这种方式在PHP switch语句中动态生成CASE声明。
你所说的是将所有表放在一个数组中,然后在switch语句中循环遍历它们以自动声明你的CASE语句。你不能做这个。
它生成:
Parse error: syntax error, unexpected T_FOREACH, expecting T_CASE or T_DEFAULT
答案 1 :(得分:1)
您可能只想将switch
语句放入foreach
?
foreach ($tables as $table) {
switch ($table) {
case 'table_one' :
// do something here
break;
case 'table_two' :
// do something here
break;
case 'table_three' :
// do something here
break;
default :
// do some error handling here
break;
}
}
或者,交换机不容易阅读,请考虑远离switch
并使用阵列驱动的if
,尤其是如果您可以动态创建你想要做什么case
:
$tables = array('table_one', 'table_two', 'table_three');
if (in_array($table, $tables)) {
// do something here
} else {
// do some error handling here
}
即使你的数组有很多元素,它也更具可读性。
答案 2 :(得分:1)
编辑:根据OP的评论,我正在写这个答案
$query=null;
switch($tableName):
{
case "table1":
$query="...";
break;
case "table2":
$query="...";
break;
case "table3":
$query="...";
break;
}
....
here goes logic to execute that query
如果你有太多的表,那么把这些查询放在数组检查中,就像这样,
$arr = array("table1"=>"query1","table2"=>"query2","table3"=>"query3",....);
$query = $arr[$tableName];
这里是执行查询的逻辑