PHP - If/else, for, foreach, while - без фигурных скобок?

То, что действительно хотел бы знать, но так и не узнал, - ярлыки в PHP.

Сейчас я кодирую функцию с циклом foreach с единственным оператором внутри. Я попытался опустить фигурные скобки, как это можно сделать в управляющих структурах if/else, и это работает. Ошибок нет.

foreach($var as $value)
    $arr[] = $value;

Теперь я попытался использовать его таким же образом, но поместив внутрь блок if/else. Опять же, все работает и никаких ошибок.

foreach($var as $value)
    if(1 + 1 == 2) {
        $arr[] = $value;
    };

Затем я подумал: "Почему это работает?" и опустил закрывающую точку с запятой. Все еще работает. Тогда я попробовал использовать оператор if/else без фигурных скобок внутри цикла foreach, и снова все работает и никаких ошибок. Но действительно ли цикл foreach сейчас закрыт/закончен?

foreach($var as $value)
    if(1 + 1 == 2)
        $arr[] = $value;

По крайней мере, я снова опустил закрывающую точку с запятой, и (как и ожидалось) произошла ошибка синтаксического анализа.

Итак, мой главный вопрос: когда я могу опустить фигурные скобки и в какой структуре/цикле/функции? Я знаю, что определенно могу сделать это в if и else. Но как насчет while, for и foreach?

И да, я знаю, что кодировать без фигурных скобок небезопасно, неумно, неважно, и есть сокращения вроде $condition ? true : false; и if: doSomething(); endif;, endfor; и endforeach;. Я не хочу изучать сокращения, я просто хочу понять условия, когда и где можно опустить фигурные скобки.

50
задан Cœur 5 February 2017 в 03:17
поделиться