致命错误:'break'不在'loop'或'switch'上下文中

Sam*_*uri 28 php wordpress

我已经设置了一个wordpress博客(我导入了数据库)并且它抛出了这个错误

致命错误:在@home/kbuzz/webapps/kb_blog/wp-content/plugins/types/embedded/common/toolset-forms/lib/adodb-time.inc中,'break'不在'loop'或'switch'上下文中.php在1012行

代码在下面的行10041013

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;
}
Run Code Online (Sandbox Code Playgroud)

Bas*_*usa 60

PHP 5.xx的,一个break外部的声明for,foreachswitch声明没有抛出一个错误消息,并且是语法上没问题.

PHP 7.0及更高版本,一个break声明将不再允许之外的for,foreach或者switch语句,并给出了一个致命的错误.

示例代码:

<?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 ... "
}
?>
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!我能够通过注释掉有问题的 .php 文件中的(无用的)break 语句来解决这个问题。 (2认同)

小智 19

替换休息; 返回false; 在你的代码中,它将工作.


Sam*_*uri 9

删除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); 
}
Run Code Online (Sandbox Code Playgroud)