Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Fatal error: 'continue' operator with non-constant operand is no longer supported

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
jovani
Отправлено: 19 Октября, 2012 - 22:32:00
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Привет всем! Дорогие люди, помогите советом. Есть код
PHP:
скопировать код в буфер обмена
  1. for($i = 0; $i < 5; ++$i) {
  2. if($i == 2)
  3.         continue
  4. print "$i<br />";
  5. }

результат данного выражения должно быть
    2
но у меня выводится следующая ошибка:
    Fatal error: 'continue' operator with non-constant operand is no longer supported in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\func.php on line 5

В чем может быть проблема? У меня установлен PHP 5.4.7
Заранее всем спасибо.
 
 Top
armancho7777777 Супермодератор
Отправлено: 19 Октября, 2012 - 22:35:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Нет символа ";" после continue
(Добавление)
jovani пишет:
результат данного выражения должно быть
2

Должно быть всё, кроме 2
 
 Top
jovani
Отправлено: 19 Октября, 2012 - 22:37:42
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




armancho7777777 пишет:
Нет символа ";" после continue

если поставить ;, то выводиться
 
 Top
armancho7777777 Супермодератор
Отправлено: 19 Октября, 2012 - 22:39:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




jovani пишет:
если поставить ;, то выводиться

А что Вам надо вывести ?
(Добавление)
Если только 2, то измените условие:

(Добавление)
Или:
PHP:
скопировать код в буфер обмена
  1. if($i == 2)
  2. echo $i.'<br>';
  3. else
  4. continue;
 
 Top
Саныч Модератор
Отправлено: 19 Октября, 2012 - 22:46:50
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




armancho7777777, все правильно там. Это пример из мануала, во многих книгах его приводят, хоть и относится он к "как не нужно делать". Должно действительно выводить только 2. Выражение continue print "$i<br />"; считается как единое целое. Самое интересное, что до PHP 5.4 это нормально работает, выводит 2. А вот с версии 5.4 - Fatal error. Видимо разработчики решили, что в continue не может быть никаких выражений, только цифра. ИМХО, правильное решение.
Вот как-то так Улыбка

Хм Не лучше ли


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
jovani
Отправлено: 19 Октября, 2012 - 22:48:15
Post Id



Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




В мануале PHP есть именно такой пример. Когда у меня стоял PHP 5.2, то данный скрипт исполнялся без проблем. Но вот на PHP 5.4 данный скрипт выдает ошибку. Может в PHP 5.4 если какие-нибудь недоработки?
 
 Top
armancho7777777 Супермодератор
Отправлено: 19 Октября, 2012 - 22:51:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




А может Вы переведёте текст ошибки в google - переводчике ?
 
 Top
OrmaJever Модератор
Отправлено: 19 Октября, 2012 - 22:53:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Саныч пишет:
Не лучше ли




(Добавление)
jovani пишет:
В мануале PHP есть именно такой пример. Когда у меня стоял PHP 5.2, то данный скрипт исполнялся без проблем. Но вот на PHP 5.4 данный скрипт выдает ошибку. Может в PHP 5.4 если какие-нибудь недоработки?

Недоработки? Слишком не красивое слово в сторону php.
http://www.php.net/manual/ru/mig...incompatible.php
Цитата:
Операторы break и continue теперь не принимают аргументов в виде переменной. Например, выражение break 1 + foo() * $bar; невозможно. Вы по-прежнему можете использовать явный аргумент в виде статической константы. Например, break 2;. Побочным эффектом этого изменения является то, что конструкции break 0; и continue 0; более недопустимы.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
armancho7777777 Супермодератор
Отправлено: 19 Октября, 2012 - 22:57:38
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Саныч пишет:
Не лучше ли

Лучше))
Тупанул, на тупом примере ))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB