Динамически генерировать случаи для оператора switch, используя массив - PullRequest
4 голосов
/ 02 февраля 2012

Я создаю скрипт для автоматической генерации RSS-канала для различных разделов моего сайта.Я запросил базу данных, и у меня есть массив данных, который представляет каждый раздел с именем $showData.Я использую оператор switch для установки различных переменных в зависимости от раздела сайта.Вместо того, чтобы изменять этот сценарий каждый раз, когда я добавляю шоу, я бы хотел, чтобы case в моем операторе switch был динамическим.

<?php
switch($section){
    case 'show1':
        $title = $showData['show1'] . ' Title';
        $description = $showData['show1'] . ' Description';
        break;
    case 'show2':
        $title = $showData['show2'] . ' Title';
        $description = $showData['show2'] . ' Description';
        break;
}
?>

Я попытался использовать цикл foreachчтобы создать каждый случай, но вы не можете поместить это в оператор switch.Кто-то еще в другом посте, который я прочитал, предложил использовать eval().

Вот мой код, который я пробовал, который не работает.

<?php
switch($showFilter)}
    foreach($showFilters as $key => $value){
        case $key:
        $title = $value;
        $description = $value;
        break;
    }
}
?>

Вот print_r массива

Array
(
    [show1] => The Name of Show One
    [show2] => The Name of Show Two
)

1 Ответ

8 голосов
/ 02 февраля 2012

Вместо использования блока switch не могли бы вы просто попробовать:

$title = $showData[$section] . ' Title';
$description = $showData[$section] . ' Description';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...