我试过这个,但只是语法错误:
<?php
$a = true;
$str = <<< EOF
{$a ? 1 : 2}
EOF;
echo $str;
是否可以在heredoc中使用这种条件语句?
答案 0 :(得分:4)
不。遗憾的是,PHP字符串插值并不那么健壮。你要么必须连接两个字符串,要么提前将这一点逻辑分配给另一个变量。
<?php
$a = true;
$b = $a ? 1 : 2;
$str = <<<EOF
Hello, world! The number of the day is: $b
EOF;
echo $str;
答案 1 :(得分:2)
我会说不。
请参阅此相关问题,了解您无法进行函数调用和可能的解决方法:Calling PHP functions within HEREDOC strings
它的关键在于你可能必须在heredoc之前将你的三元运算符分配给一个变量。
答案 2 :(得分:2)
你可以这样做:
$values = array('1', '2');
$str = <<<EOF
{$values[$a]}
EOF;
答案 3 :(得分:1)
你可以使用heredocs作为三元组的一半。作为:
/ else情况,
$optional_input = empty($name) ? "" : <<<INPUT
<input type="hidden" name="name" value="$name" />
INPUT;
如果你不介意前卫的语法,那就像?
/ if case:
$optional_input = isset($name) ? <<<INPUT
<input type="hidden" name="name" value="$name" />
INPUT
: "";
对于?
/ if情况,heredoc的结束分隔符(INPUT
) 需要在其自己的行上; :
缩进是为了清晰起见。