PHP, если сокращение и эхо в одной строке - возможно?

Какой лучший и предпочтительный способ написания сокращенного однострочного текста, например:

expression ? $foo : $bar

Поворот сюжета: мне нужно echo $foo или echo $bar. Какие-нибудь безумные уловки? :)


person Wordpressor    schedule 27.11.2013    source источник
comment
Тернарный оператор, а не сокращение if. Какой здесь актуальный вопрос?   -  person Phil    schedule 27.11.2013
comment
эхо выражение? $ foo: $ bar;   -  person Felix Kling    schedule 27.11.2013
comment
@Phil: Условное выражение, а не тернарный оператор. :) Будь это заявление, echo работал бы в ветках. И единственная причина, по которой вам может сойти с рук называть его тернарным, является то, что в настоящее время существует только один тернарный оператор. Тернарное значение, имеющее отношение к трем ... это не очень полезное имя. :)   -  person cHao    schedule 27.11.2013
comment
@cHao Ах да, s/statement/operator. Меня просто беспокоит, когда я слышу сокращение, если   -  person Phil    schedule 27.11.2013
comment
Сегодня у нас есть Элвис "??" оператор stackoverflow.com/a/1993455/560287   -  person John Magnolia    schedule 16.04.2021


Ответы (3)


<?=(expression) ? $foo : $bar?>

изменить: вот хорошее чтение для вас по теме < / а>

изменить: подробнее для чтения

person Dave    schedule 27.11.2013
comment
Скобки лишние - person Phil; 27.11.2013
comment
Вы, сэр, правы. Здесь они действительно в некотором роде излишни. Но имейте в виду, что иногда выражение может быть сложным, поэтому нужны лишние круглые скобки. - person Dave; 27.11.2013
comment
Я никогда не видел, чтобы PHP не мог вычислить условное выражение, каким бы сложным оно ни было, без пары скобок. - person Phil; 27.11.2013
comment
Фил, все хорошо, я уже сказал, что ты был прав и т. Д. Это только вопрос предпочтений, я люблю пояснять скобками. Конечно, это не для php, а скорее для человека. Успокойся, ночь. - person Dave; 27.11.2013
comment
Не обращайте на меня внимания, я просто сторонник ненужного синтаксиса (например, использование скобок в троичных выражениях и операторов include / require) - person Phil; 27.11.2013
comment
Если вы привыкли использовать and и or в своих условиях, а не && и ||, это может сбить вас с толку. Но только потому, что многословные операторы имеют разный приоритет. - person cHao; 27.11.2013
comment
что я могу сделать, если я хочу, чтобы эхо отображалось только тогда, когда истинно, и ничего не делалось с ложью? - person pavitran; 16.02.2017
comment
$ bar = '' @pavitran - person Lightningsoul; 03.04.2018
comment
Короткие теги по умолчанию отключены и обесцениваются, поэтому рекомендуется НЕ использовать их больше. php.net/manual/en/language.basic-syntax.phptags. php - person danger89; 06.01.2019
comment
@ dangerous89 ‹? = не устарело ... в версии 5.4 на той самой странице, на которую вы указали,« Тег ‹? = всегда доступен независимо от настройки ini short_open_tag». - person Adam; 05.03.2019
comment
@Adam Действительно, но это только для версии 5.4. В противном случае указано: <? (which is discouraged since it is only available if enabled using the short_open_tag php.ini - person danger89; 11.03.2019
comment
@ dangerous89 это начиная с 5.4. ‹? не рекомендуется, поскольку он зависит от включения short_open_tag, как вы сказали. ‹? = Даже в 7.X не полагается на то, что эта опция включена, поэтому нет причин для того, чтобы отказываться от нее. - person Adam; 11.03.2019

эхо выражение? $ foo: $ bar;

person A.M.N.Bandara    schedule 27.11.2013

тернарный оператор оценивает значение второго выражения, если первое оценивается как TRUE, и оценивается как третье выражение, если первое оценивается как FALSE. Чтобы echo одно значение или другое, просто передайте тернарное выражение в оператор echo.

echo expression ? $foo : $bar;

Дополнительные сведения о тернарном операторе см. В руководстве по PHP: http://php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary

person Community    schedule 27.11.2013