Как использовать A? X: Y синтаксис с heredoc в PHP?
Я попробовал это, но получил только синтаксическую ошибку:
<?php
$a = true;
$str = <<< EOF
{$a ? 1 : 2}
EOF;
echo $str;
Можно ли использовать такой условный оператор внутри heredoc?
4 ответа
Нету. К сожалению, интерполяция строк в PHP не такая надежная. Вам придется либо объединить две строки, либо заранее назначить эту небольшую логику другой переменной.
<?php
$a = true;
$b = $a ? 1 : 2;
$str = <<<EOF
Hello, world! The number of the day is: $b
EOF;
echo $str;
Я бы сказал нет.
См. Этот связанный вопрос о том, почему вы не можете выполнять вызовы функций и возможные обходные пути: вызов функций PHP внутри строк HEREDOC
Суть в том, что вам, вероятно, придется присвоить свой троичный оператор переменной до heredoc.
Вы могли бы сделать что-то вроде этого:
$values = array('1', '2');
$str = <<<EOF
{$values[$a]}
EOF;
FWIW вы можете использовать heredocs как любую половину троичного. Как :
/ в другом случае,
$optional_input = empty($name) ? "" : <<<INPUT
<input type="hidden" name="name" value="$name" />
INPUT;
и если вы не возражаете против синтаксиса авангарда, как ?
/ если дело:
$optional_input = isset($name) ? <<<INPUT
<input type="hidden" name="name" value="$name" />
INPUT
: "";
Для ?
/ в случае, закрывающий разделитель heredoc (INPUT
) должен быть на своей линии; :
Отступы для ясности.