Конкатенация в условии

118
10 июня 2021, 19:50

Как сделать так, чтобы выводилась строка 'Перед условие 1 после' ?

Сейчас выводится только условие 1

 $text = 'Что-то';
 $q = 'Перед ' . $text ? 'условие 1' : 'условие 2' . ' после';
 echo $q;
Answer 1

Тернарный оператор не совместим с интуицией. Проще всего с этим бороться с помощью скобок. Там, где как вам кажется, должна быть проверка и выбор варианта, там и оберните всё в скобки:

$q = 'Перед ' . ($text ? 'условие 1' : 'условие 2') . ' после';

Иначе сейчас у вас получается вот такая логика с точки зрения пхп:

$q = ('Перед ' . $text) ? ('условие 1') : ('условие 2' . ' после');

И, т.к. в левой части у вас точно истина, вы получаете центральную часть как результат.

Answer 2
$text = 'Что-то';
$q = 'Перед ' . ($text ? 'условие 1' : 'условие 2') . ' после';
echo $q;
READ ALSO
Отсортировать ассоциативный массив

Отсортировать ассоциативный массив

Есть следующий ассоциативный массив, который содержит список всех координат:

138
sql | Проблемы с русским языком

sql | Проблемы с русским языком

В базе данных русский текст отображается нормально, но когда вывожу ассоциативный массив, то получается что-то типо тоРскам

91
Как вывести простой компонент внутри шаблона другого компонента Битрикс

Как вывести простой компонент внутри шаблона другого компонента Битрикс

Я пытаюсь вызвать в шаблоне обратной связи (custom:mainfeedback), вывести соглашение о персональных данных ('bitrix:main

78
Сложная структура JSON'a (Jackson/Gson)

Сложная структура JSON'a (Jackson/Gson)

CDF DTF LEND, CDF POLO LEND, FER POLO LEND - название аккаунтов

112