我们可以在<<< EOD语法代码中使用PHP iF语句吗?

Kir*_*mar 4 php syntax

<<<EOD用来输出一些数据.我的问题是如何在<<<EOD语法内部使用php ?我可以像这样使用它吗?

 <<<EOD
<h3>Caption</h3>
if(isset($variablename))
{
echo "...some text";
}
else
{
echo "...some text";
}
EOD;
Run Code Online (Sandbox Code Playgroud)

Spu*_*ley 7

不,因为<<<块内的所有内容(称为"HEREDOC")都是字符串.

如果你在问题中编写代码,你将编写一个包含PHP代码的字符串,这不是你想要的(我希望).

在HEREDOC之外做你的逻辑,并在其中使用纯变量:

if(isset($variablename)) {
   $outputVar = "...some text";
} else {
    $outputVar = "...some text";
}

print <<<EOD
<h3>Caption</h3>
{$outputVar}
EOD;
Run Code Online (Sandbox Code Playgroud)


mar*_*rio 7

您只能在双引号字符串中使用表达式而不是语句.

但是,在复杂的变量表达式中有一种解决方法.事先声明实用程序函数,并将其分配给变量.

$if = function($condition, $true, $false) { return $condition ? $true : $false; };
Run Code Online (Sandbox Code Playgroud)

然后通过:

echo <<<TEXT

   content

   {$if(isset($var), "yes", "no")}

TEXT;
Run Code Online (Sandbox Code Playgroud)