Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование инструкции break в операторе ? ? - краткое IF 
V
    Опции темы
BuShaRt
Дата 8.11.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Как я понял вот так делать нельзя...

Код

(!empty($a)) ? print $a : break;


Какие есть другие способы "кратко" прервать интерацию цикла, если исползуеться оператор "?"?

Это сообщение отредактировал(а) BuShaRt - 8.11.2007, 13:05
PM MAIL   Вверх
vasac
Дата 8.11.2007, 13:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Использовать IF
PM WWW   Вверх
BuShaRt
Дата 8.11.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



vasac, Гениально smile 
Ключевое слово было КРАТКО, мне массивная структура некчему, когда кол-во строк под 1000 
PM MAIL   Вверх
flashaa
Дата 8.11.2007, 14:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Тернарный оператор не совсем краткий If,  т.к. общий синтаксис его $var = (<условие>) ? <expr1> : <expr2>;
таким образом он присваивает результат своего выполнения. Поэтому, думаю инструкции в нем неприменимы, так же как и невозможно написать $var = break;

Это сообщение отредактировал(а) flashaa - 8.11.2007, 14:30
PM MAIL   Вверх
BuShaRt
Дата 8.11.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



flashaa
Не совсем так... 
Код

(!empty($a)) ? print $a : print '';


Вполне работает
PM MAIL   Вверх
flashaa
Дата 8.11.2007, 15:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Не вижу противоречий, print - функция, она возращает значение (всегда единичку). break же является просто командой интерпретатору, которая ничего не возвращает.
Подставьте вместо print  echo, которая функцией не явялется и получите сообщение об ошибке.
PM MAIL   Вверх
BuShaRt
Дата 8.11.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



flashaa
Да, действительно - вы правы.

Предположив, что нужно возращать TRUE, сделал так

Код

function brk () {
    break;
    return TRUE;
}

for ($i=1; $i<=10; $i++) {
    ($i!=5) ? print 1 : brk();
}


В итоге Fatal error: Cannot break/continue 1 level in z:\home\newsystem\www\it\index.php on line 6
PM MAIL   Вверх
GZep
Дата 8.11.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: 8
Всего: 32



Цитата(BuShaRt @  8.11.2007,  13:02 Найти цитируемый пост)
Как я понял вот так делать нельзя...

(!empty($a)) ? print $a : break;

можно так:
Код

$code = !empty($a) ? "print $a" : "break";
eval($code);


Цитата(BuShaRt @  8.11.2007,  16:29 Найти цитируемый пост)
Предположив, что нужно возращать TRUE, сделал так

а что делает break в функции?

Добавлено через 1 минуту и 24 секунды
BuShaRt, если хотите воткнуть break в такую конструкцию, то получится это сделать только с помощью eval, что не будет кратким решением.


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
flashaa
Дата 8.11.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(BuShaRt @  8.11.2007,  16:29 Найти цитируемый пост)
function brk () {
    break;
    return TRUE;
}


Цитата(GZep @  8.11.2007,  16:38 Найти цитируемый пост)
$code = !empty($a) ? "print $a" : "break";
eval($code);


По-моему и первое и второе уже больше if () {}  smile 
А eval() штука довольно-таки тормозная к тому же. Хотя если она выполняется 1 раз, думаю, особо много задержки не будет.

BuShaRt, вы используете ООП? Если нет, то вам оно судя по 2000 строк кода то, что доктор прописал.
Короткий if приятен конечно из-за своих размеров, но к сожалению, читать его сходу достаточно сложно, а если ещё для него приходится изваращаться, уж лучше по-моему написать if все-таки smile 
PM MAIL   Вверх
BuShaRt
Дата 8.11.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Цитата(GZep @  8.11.2007,  16:38 Найти цитируемый пост)
BuShaRt, если хотите воткнуть break в такую конструкцию, то получится это сделать только с помощью eval, что не будет кратким решением.

Да, согласен, Eval вовсе не вариант.

Цитата(flashaa @  8.11.2007,  16:46 Найти цитируемый пост)
По-моему и первое и второе уже больше if () {}   

Функция пишеться 1 раз и юзаеться потом постоянно.


Цитата(flashaa @  8.11.2007,  16:46 Найти цитируемый пост)
BuShaRt, вы используете ООП? Если нет, то вам оно судя по 2000 строк кода то, что доктор прописал.

Не поверите, у меня класс состоит из такого кол-ва строк smile

Цитата(flashaa @  8.11.2007,  16:46 Найти цитируемый пост)
Короткий if приятен конечно из-за своих размеров, но к сожалению, читать его сходу достаточно сложно

Да нет, мне ручками побегать по клавиатуре не лень, мне как раз потом читать проще код, когда нету сложны конструкций из if-ов.


А в целом я понял - задача нереализуемая, учитывая мои пожелания и рациональность, всем спасибо, будем переигрывать с участием IF.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0753 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.