Могу ли я использовать цикл for для итерации случаев при использовании цикла переключения регистра? - PullRequest
1 голос
/ 24 апреля 2010

В PHP, при использовании цикла переключения регистра, могу ли я использовать цикл for для итерации регистра? например

switch .....

foreach($xyz as $abc)

{
 CASE:$abc
}

default;

UPDATE

Я получаю значение из БД, это значение является именем таблицы, с помощью «case» я хочу выполнить конкретный запрос в соответствии с именем таблицы

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 24 апреля 2010

Я не думаю, что вы можете динамически генерировать объявления CASE в операторах переключения PHP таким образом.

То, о чем вы говорите, - это получение всех ваших таблиц в массиве, а затем их цикл внутри оператора switch для автоматического объявления ваших операторов CASE. Ты не сможешь это сделать.

Генерирует:

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

1 голос
/ 24 апреля 2010

РЕДАКТИРОВАТЬ: в соответствии с комментариями ОП, я пишу этот ответ

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

здесь идет логика для выполнения запроса

1 голос
/ 24 апреля 2010

Возможно, вы просто хотите поместить оператор 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
}

Это намного удобнее для чтения, даже если в вашем массиве много элементов.

...