怎么用A?在PHP中使用heredoc的x:y语法?

时间:2010-06-10 04:08:02

标签: php syntax heredoc

我试过这个,但只是语法错误:

<?php

$a = true;
$str = <<< EOF
{$a ? 1 : 2}
EOF;
echo $str;

是否可以在heredoc中使用这种条件语句?

4 个答案:

答案 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 需要在其自己的行上; :缩进是为了清晰起见。