【问题标题】:Foreach inside a switch-statement在 switch 语句中进行 Foreach
【发布时间】:2011-11-17 21:19:23
【问题描述】:

如何将foreach-loop 包含在switch-statement 中?

我有这样的东西(虽然不知道是否正确):

    $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 ...”

【问题讨论】:

  • break; 命令退出当前的case,所以请先尝试删除它.. :)
  • 我相信您在这里需要一种不同的方法...
  • 不,没用。我认为switch-statement 中需要brake
  • 你有太多的间接层级。你必须编写你想要的代码。您只是编写代码来编写您想要的代码。你必须制作食谱,而不是吃掉它。

标签: php foreach switch-statement


【解决方案1】:

其实这是你的默认情况:

$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,如果它仍然为空,则创建一个空的 &lt;TD&gt; 元素,如果已设置,则创建一个 &lt;TD class="..."&gt; 元素。

【讨论】:

【解决方案2】:

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

【讨论】:

  • 太糟糕了!不过感谢您的信息!
  • 是的,成功了。非常感谢!! (我需要切换 $activiteiten$list_day ;))
【解决方案3】:

这种方式是不可能的。你可以试试类似

if (in_array($list_day, $activiteiten))

改为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多