Неустранимая ошибка: «break» не в контексте «loop» или «switch» в

19

Я установил блог wordpress (я импортировал db), и он выбрасывает эту ошибку

  

Неустранимая ошибка: «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;
}
    
задан Samuel Muiruri 19.01.2016 в 08:50
источник
  • удалить прерывание от кода, почему вам нужно разбить функцию –  Chetan Ameta 19.01.2016 в 08:50
  • @ChetanAmeta благодарит это исправлено –  Samuel Muiruri 19.01.2016 в 08:56

3 ответа

42

PHP 5.xx , оператор break вне оператора for , foreach или switch DID NOT выдает сообщение об ошибке и синтаксически все в порядке.

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 ... "
}
?>
    
ответ дан Basil Musa 08.04.2016 в 23:56
источник
  • Этот ответ является частично правильным, но заставил меня тратить много времени на выявление неправильной проблемы. break и continue по-прежнему разрешены во время циклов. –  davewhirlwind 08.02.2017 в 21:59
  • Спасибо! Я смог исправить проблему, комментируя (бесполезный) оператор break в файле .php. –  Judah Himango 01.03.2017 в 16:38
  • есть ли альтернатива? что-то, чтобы предотвратить запуск остальной части скрипта? –  Anthony 07.08.2017 в 21:21
  • @davewhirlwind, он не сказал, что не допускается внутри цикла, но все равно правильный ответ. но почему это не отмечено как ответ? –  Bram Hammer 20.11.2017 в 11:12
  • @ Энтони, вы могли бы использовать оператор if / else? Возврат false, если вы используете функцию? и т.д .. несколько хороших вариантов imho. –  Bram Hammer 20.11.2017 в 11:13
Показать остальные комментарии
8

Удаление 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); 
}
    
ответ дан Samuel Muiruri 19.01.2016 в 08:56
источник
1

заменить разрыв; с возвратом false; в вашем коде, и он будет работать.

    
ответ дан David Kaushik 17.03.2018 в 11:20
источник