Php 继续,不要循环开始

Php 继续,不要循环开始,php,logic,Php,Logic,我理解这个错误有点困难。 代码如下: function filter_optionsfordash(array $data,$dash) { $filtered_options = array(); $len = strlen($dash); foreach ($data as $k => $value) { if (substr($k,0,$len) === $dash) { $option_name = trim(str_r

我理解这个错误有点困难。 代码如下:

 function filter_optionsfordash(array $data,$dash) {
    $filtered_options = array();
    $len = strlen($dash);    
    foreach ($data as $k => $value) {
      if (substr($k,0,$len) === $dash) {
        $option_name = trim(str_replace($dash . '_','',$k)); 

        switch ($option_name) {
          case 'displayColumns':
            $value = explode(',',$value);
          break;

          case 'dashletTitle':
            $option_name = 'title';
          break;

          case 'id':
          case 'module':
          case 'action':
          case 'configure':
          case 'to_pdf':
            continue;
          break;
        }


        $filtered_options[$option_name] = $value;         
      }
    }    

    return $filtered_options;
  }
我在这里试图做的是从给定数组中筛选一些以给定名称(
$dash
)开头的值(在本例中是
$\u POST
),但我想筛选出“id”、“module”、“action”、“configure”或“to\u pdf”这些值

所以我认为“继续”是可行的。由于switch语句不是循环,“continue”应该转到循环的开头(foreach),但显然这不会发生。我仍在获取数组中不需要的密钥名

我已经找到了一个解决方案,通过稍微修改代码,但我真的很想理解为什么这不起作用

“继续”应该会把我送回foreach

说:

continue在循环结构中用于跳过当前循环迭代的其余部分[…]
注意:注意,在PHP中,switch语句被认为是一种循环结构,用于continue。表示:

continue在循环结构中用于跳过当前循环迭代的其余部分[…]

注意:注意,在PHP中,为了继续,switch语句被视为循环结构。您需要使用continue 2:

 function filter_optionsfordash(array $data,$dash) {
    $filtered_options = array();
    $len = strlen($dash);    
    foreach ($data as $k => $value) {
      if (substr($k,0,$len) === $dash) {
        $option_name = trim(str_replace($dash . '_','',$k)); 

        switch ($option_name) {
          case 'displayColumns':
            $value = explode(',',$value);
          break;

          case 'dashletTitle':
            $option_name = 'title';
          break;

          case 'id':
          case 'module':
          case 'action':
          case 'configure':
          case 'to_pdf':
            continue 2;
          break;
        }


        $filtered_options[$option_name] = $value;         
      }
    }    

    return $filtered_options;
  }

您需要改用continue 2:

 function filter_optionsfordash(array $data,$dash) {
    $filtered_options = array();
    $len = strlen($dash);    
    foreach ($data as $k => $value) {
      if (substr($k,0,$len) === $dash) {
        $option_name = trim(str_replace($dash . '_','',$k)); 

        switch ($option_name) {
          case 'displayColumns':
            $value = explode(',',$value);
          break;

          case 'dashletTitle':
            $option_name = 'title';
          break;

          case 'id':
          case 'module':
          case 'action':
          case 'configure':
          case 'to_pdf':
            continue 2;
          break;
        }


        $filtered_options[$option_name] = $value;         
      }
    }    

    return $filtered_options;
  }

随机排序顺序并不能完全解决快速向上投票答案的“问题”;-)随机排序顺序并不能完全解决快速向上投票答案的“问题”;-)