转换语句中的Foreach

时间:2011-11-17 21:19:23

标签: php foreach switch-statement

如何在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在......”

3 个答案:

答案 0 :(得分:3)

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>';
}

答案 1 :(得分:2)

实际上这是你的默认情况:

$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="...">元素

答案 2 :(得分:1)

这种方式不可能。您可以尝试类似

的内容
if (in_array($list_day, $activiteiten))

代替