致命错误:“break”不在“loop”或“switch”上下文中
Posted
技术标签:
【中文标题】致命错误:“break”不在“loop”或“switch”上下文中【英文标题】:Fatal error: 'break' not in the 'loop' or 'switch' context in 【发布时间】:2016-04-24 14:18:38 【问题描述】:我已经设置了一个 wordpress 博客(我导入了数据库)并且它抛出了这个 错误
致命错误:'break'不在'loop'或'switch'上下文中 /home/kbuzz/webapps/kb_blog/wp-content/plugins/types/embedded/common/toolset-forms/lib/adodb-time.inc.php 1012行
代码如下,从1004
到1013
行
function adodb_tz_offset($gmt,$isphp5)
$zhrs = abs($gmt)/3600;
$hrs = floor($zhrs);
if ($isphp5)
return sprintf('%s%02d%02d',($gmt<=0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60);
else
return sprintf('%s%02d%02d',($gmt<0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60);
break;
【问题讨论】:
去掉代码中的break,为什么需要break in函数 @ChetanAmeta 感谢修复 【参考方案1】:使用return false;
而不是break;
或exit();
或continue;
这会阻止脚本的其余部分运行,但如果规则仍然为真则将继续循环
【讨论】:
【参考方案2】:PHP 5.xx,在for
、foreach
、while
或switch
语句之外的break
语句DID NOT 抛出错误消息并且在语法上没问题。
PHP 7.0 及更高版本,在 for
、foreach
、while
或 switch
语句之外不再允许使用 break
语句,并给出致命错误。
示例代码:
<?php
if (2 == 1 + 1)
echo "Dummy Example of break inside if condition";
break; // - Valid in php 5.*
// - Gives a Fatal error in PHP 7.*.*:
// "Fatal error: 'break' not in the 'loop' or 'switch' context in ... "
?>
【讨论】:
这个答案部分正确,但导致我浪费了大量时间来追踪错误的问题。在 while 循环中仍然允许使用 break 和 continue。 谢谢!我能够通过在有问题的 .php 文件中注释掉(无用的)break 语句来解决问题。 那还有其他选择吗?阻止脚本的其余部分运行的东西? @davewhirlwind 他没有说在while循环中是不允许的:)所以仍然是一个正确的答案。但为什么没有将其标记为答案? 仍然允许在 for、while 和 switch 语句中使用。其他地方不允许这样做。【参考方案3】:看break;
替换为
return false;
在您的代码中,它将起作用。
【讨论】:
我认为这是一个更笼统的答案。通过一些解释,它将成为最好的答案。在我的情况下,我有:function do_something() if ($condition) <code block 1> else break; <code block 2>
如果我只是删除 break
, 将被执行。使用return false;
将不会被执行。
【参考方案4】:
删除break
修复了它
function adodb_tz_offset($gmt,$isphp5)
$zhrs = abs($gmt)/3600;
$hrs = floor($zhrs);
if ($isphp5)
return sprintf('%s%02d%02d',($gmt<=0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60);
else
return sprintf('%s%02d%02d',($gmt<0)?'+':'-',floor($zhrs),($zhrs-$hrs)*60);
【讨论】:
以上是关于致命错误:“break”不在“loop”或“switch”上下文中的主要内容,如果未能解决你的问题,请参考以下文章
使用 gcc 编译时导致错误的 case break [关闭]
无法过去 - 线程 1:致命错误:在展开可选值时意外发现 nil [重复]