【问题标题】:While using a switch case loop, can i use the for loop for iterating the cases?在使用 switch case 循环时,我可以使用 for 循环来迭代 case 吗?
【发布时间】:2010-04-24 10:29:10
【问题描述】:

在 PHP 中,当使用 switch case 循环时,我可以使用 for 循环来迭代 case 吗? 例如

switch .....

foreach($xyz as $abc)

{
 CASE:$abc
}

default;

更新

我正在从数据库中获取值,这个值是表的名称,通过使用“case”我想根据表名执行特定的查询..

这可能吗?

【问题讨论】:

  • 是,但使用 if 代替 case
  • @nik 这里的人有什么经验?为了让我们检查它?
  • @Trilli 没有让你详细说明...
  • 你希望你的代码做什么?
  • @nik hmmm 实际上你是对的......我本可以做到的,解决方案并不难,但你知道我知道其他编码人员如何分析......你知道从分析中学习,Desi hai dost hum to... aalsi ho gaye ha baithe baithe.. :) dehradun 怎么样?

标签: php switch-statement


【解决方案1】:

我不认为你可以通过这种方式在 PHP switch 语句中动态生成 CASE 声明。

您所说的是将所有表放在一个数组中,然后在 switch 语句中循环它们以自动声明您的 CASE 语句。你不可以做这个。

它生成:

Parse error: syntax error, unexpected T_FOREACH, expecting T_CASE or T_DEFAULT

【讨论】:

  • 请详细说明在我的问题中动态生成是什么意思..你可能在这里误会我的意思..
  • +1 谢谢伙计,我明白你的意思了。实际上我是编程术语的新手......
【解决方案2】:

您可能只想将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
}

即使您的数组有很多元素,这也更具可读性。

【讨论】:

  • 他在问是否可以动态生成 CASE 语句。
  • 你说得对,这就是我想要做的,这可以做到,但我有大约 32 张桌子,它们都是 Joomla 桌子,你看到他们有很多桌子,所以解决方案你你看到的建议可能很长……你还有什么可以建议的吗???
  • @Finbarr:哦,现在我明白了。没有。但是通常(可能并非总是如此),您可以通过更改循环来解决潜在问题。不过,谢谢。
  • @Parth:编辑了我的答案,希望对您有所帮助。如果这仍然是必要的构造,您可以将其嵌入到您的 foreach 中,并将 $table 作为您要提取的变量。
  • 嗯,非常非常...我会这样做.. 谢谢哥特式... :) 上帝保佑你
【解决方案3】:

编辑: 根据 OP 的 cmets,我正在写这个答案

   $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];

这里是执行查询的逻辑

【讨论】:

  • @reddy Saahab 如果是 Joomla 32 table hote hai usme,这可能会很长.. :) lamba ho jayegaa.. Koi aur idea do plsss
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多