Foreach внутри оператора switch - PullRequest
1 голос
/ 18 ноября 2011

Как я могу заключить foreach -петл в switch -статум?

У меня есть что-то вроде этого (хотя я не знаю, правильно ли это):

    $activiteiten = array(2,9,11);

    switch ($list_day) { 
            case $today : 
                $calendar.= '<td class="today">';
                break;

             foreach ($activiteiten as &$value) {
                case $value : 
                $calendar .= '<td class="date_has_event">';
                break;
             }

            default : 
                $calendar .= '<td>';
        }

Я получаю сообщение об ошибке «Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный T_CASE in ...»

Ответы [ 3 ]

3 голосов
/ 18 ноября 2011

PHP не позволяет создавать операторы case программно.

Как насчет этого:

$activiteiten = array(2,9,11);

if ($list_day == $today){
    $calendar.= '<td class="today">';
}elseif(in_array($list_day, $activiteiten)){
    $calendar .= '<td class="date_has_event">';
}else{
    $calendar .= '<td>';
}
2 голосов
/ 18 ноября 2011

На самом деле это ваш случай по умолчанию:

$activiteiten = array(2,9,11);

switch ($list_day)
{ 
    case $today:

        $calendar .= '<td class="today">';
        break;

    default:

         foreach ($activiteiten as $value)
         {
            if ($list_day === $value)
            {
                $calendar .= '<td class="date_has_event">';
                break 2; # !!
            }
         }

        $calendar .= '<td>';
}

Но вместо этого вы могли бы (должны) сначала использовать некоторую логику, чтобы получить $class, и если он все еще пуст, создайте пустой элемент <TD>, если он установлен, создайте элемент <TD class="...">.

1 голос
/ 18 ноября 2011

Это невозможно.Вы можете попробовать что-то вроде

if (in_array($list_day, $activiteiten))

вместо

...