Конкатенация + Тернар

В PHP есть способ объединить две строки, используя тернарный условный?

<?= 'something' . (true) ? 'else' : 'not'; ?> 

Когда я пытаюсь это сделать, все, что я получаю, скорее else , чем желаемое.

Ваш код равен

 <?= ('something' . (true)) ? 'else' : 'not'; ?> 

Потому что в соответствии с таблицей Оператора Приоритет оператор . имеет более высокий приоритет тройного оператора ?:

Таким образом, вы должны принудительно перенести приоритет в круглые скобки, как объясняется Rizier123

Просто поставьте скобки вокруг всего троичного оператора следующим образом:

 <?= 'something' . ((true) ? ' else' : ' not'); ?> 

Почему вы должны это делать?

Ответ: приоритет оператора

Дополнительную информацию см. В руководстве: http://php.net/manual/en/language.operators.precedence.php

Да, вам нужно положить тронар в скобки. Попробуй это:

 <?php echo 'something '.((true) ? 'else' : 'not'); ?>