【发布时间】:2009-12-07 15:58:51
【问题描述】:
我在理解这个错误时遇到了一些麻烦。 代码如下:
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;
}
我在这里尝试做的是从给定数组中过滤一些值(在这种情况下它将是$_POST),它们以给定名称($dash)开头,但我想过滤掉'id'、'module'、'action'、'configure' 或 'to_pdf'。
所以我认为会起作用的是“继续”。由于 switch 语句不是循环,“继续”应该转到循环的开头(foreach),但显然这不会发生。我仍然在数组中得到我不想要的键名。
我通过稍微更改代码找到了解决方案,但我真的很想了解为什么这不起作用。
“继续”应该把我送回 foreach!!
【问题讨论】: