В 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'); ?>