我试过了,但只有一个语法错误:
<?php
$a = true;
$str = <<< EOF
{$a ? 1 : 2}
EOF;
echo $str;
是否可以在 heredoc 中使用这种条件语句?
没有。不幸的是,PHP 字符串插值并不是那么健壮。您要么必须连接两个字符串,要么提前将那一点逻辑分配给另一个变量。
<?php
$a = true;
$b = $a ? 1 : 2;
$str = <<<EOF
Hello, world! The number of the day is: $b
EOF;
echo $str;
你可以这样做:
$values = array('1', '2');
$str = <<<EOF
{$values[$a]}
EOF;
FWIW,您可以将 heredocs 用作三元组的任何一半。作为:
/else 的情况,
$optional_input = empty($name) ? "" : <<<INPUT
<input type="hidden" name="name" value="$name" />
INPUT;
如果您不介意前卫的语法,例如?
/if 情况:
$optional_input = isset($name) ? <<<INPUT
<input type="hidden" name="name" value="$name" />
INPUT
: "";
对于?
/if 情况,heredoc 的结束分隔符 ( INPUT
)确实需要单独一行;的:
缩进是为了清楚起见。