У документації сказано, що змішувати альтернативний синтаксис з традиційним не можна: http://php.net/manual/en/control-structures.alternative-syntax.php
Note:
Mixing syntaxes in the same control block is not supported.
Я був впевнений, що малася на увазі конструкція типу:
if($_str1 === 'a'):
if($_str2 === 'b'){
echo 'OK!';
}
endif;
А виявляється, що вкладені if’и (while’и, for’и, foreach’і, switch’і) теж обов’яково повинні мати двокрапку та закриваюче слово. Скорочено писати у вкладенні щось на кшталт if($_str2 === 'b') echo 'OK!'; не можна, буде помилка парсингу!