Зогадко в субботу вечером

A1x

Новичок
+1 за то что всегда ставить фиг. скобки - хороший стиль
 

WP

^_^
Ничего не выведет, это ж сразу видно.
Смотрите.
PHP:
if(0) if(1) echo 1; else echo 2;
При отсутствии фигурных скобок интерпретатор берет следующий вызов в качестве операнда. Т.е. для оператора if (0) операндом является if (1). else относится к if (1). Т.к. 0 это ложь, операнд if (1) echo 1; else echo 2; не выполнится.
 

jonjonson

Охренеть
Ничего сложного.
Имхо, если нет скобок, то после if допустимо только одна "конструкция\строка" (каждая новая требует группировки скобками, которых нет). В данном случае очередной if (опять же без скобок). Изначально мы уже определились, что выбор однозначно false и вложенный if не срабатывает. :)

Меня ничто не смутило :-P

Расставляйте скобки, что бы не было казуистики :)
 

Pigmeich

Новичок
Ничего, ибо 0 - ложь, а else исторически относиться к последнему незакрытому ифу.

-~{}~ 27.01.08 05:22:

А кому не нравиться: пишете на питоне, там по отступу сразу к какому блоку инструкция относиться.
 

Angerslave

Новичок
Хм, я что-то тоже думал, что 2... Оказалось ничего... Буду знать... Хотя я всегда расставляю скобки в случаях возникновения таких вот коллизий... Не расставляю только если алгоритм нигде не разветвляется.
 

С.

Продвинутый новичок
Автор оригинала: WP
... это ж сразу видно ...
... else относится к if (1) ...
Вот как раз это здесь и не очевидно. Ни один RFC такое поведение не будет стандартизовать. Коль синтаксис формально не нарушен, отдаст результат на откуп интерпретатору/компилятору с пометкой "поведение непредсказуемо".

На индивидуальном восприятии у меня (как и у разрабитчиков интерпретатора) else ассоциируется со вторым if'ом. Но как оказалось, есть немало людей совсем с другими ассоциациями.
 

jonjonson

Охренеть
Никто не заметил, что else вообще не имеет никакого веса?.. Если лож то на правду и не смотрим :)
 

Фанат

oncle terrible
Команда форума
dark-demon
был у меня косяк точно. но сейчас не могу вспомнить - в чем.
 

phprus

Moderator
Команда форума
С.
Вот как раз это здесь и не очевидно. Ни один RFC такое поведение не будет стандартизовать. Коль синтаксис формально не нарушен, отдаст результат на откуп интерпретатору/компилятору с пометкой "поведение непредсказуемо".
Если мне не изменяет память, то для С и С++ такое поведение заложено в стандарте, хотя подтвердить свои слова я не могу ибо у меня сейчас нет стандарта.

В PHP конечно-же такой код ничего не выведет.
 

dark-demon

d(^-^)b
не может быть. if+endif семантически экивалентна фигурным скобочкам

: - {
else: - } else {
endif; - }

более того, endif нельзя случайно спутать с окончанием блока-цыкла

-~{}~ 27.01.08 13:06:

например, такая конструкция выдаст ошибку и программист будет обязан куда-нибудь всунуть ещё один endif, чтобы объяснить машине, что он имел ввиду:
PHP:
if(0): if(1): echo 1; else: echo 2; endif;
 

berkut

Новичок
во задница. нужто ещё поддерживает пых : endif;
ниразу реального кода не видел с таким синтаксисом
 

A1x

Новичок
особенно если пишешь вперемешку пхп и хтмл то <?php endif; ?> гораздо лучше читается в коде чем <?php } ?>
 

LeFF®

Новичок
Автор оригинала: berkut
во задница. нужто ещё поддерживает пых : endif;
ниразу реального кода не видел с таким синтаксисом
у битрикса к примеру практически во всех шаблонах
 

Beavis

Banned
и я тоже в шаблонах использую старые варианты условий и циклов
 
Сверху