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



我使用<<<EOD输出一些数据。我的问题是如何使用php如果条件内<<<EOD语法?我可以这样使用它吗

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

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

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

在herdoc之外进行逻辑操作,并在其中使用普通变量:

if(isset($variablename)) {
   $outputVar = "...some text";
} else {
    $outputVar = "...some text";
}
print <<<EOD
<h3>Caption</h3>
{$outputVar}
EOD;

在双引号字符串中只能使用表达式,不能使用语句。

但是,在复杂的变量表达式中有一个解决方法。事先声明一个实用函数,并将其赋值给一个变量。
$if = function($condition, $true, $false) { return $condition ? $true : $false; };

然后通过:

echo <<<TEXT
   content
   {$if(isset($var), "yes", "no")}
TEXT;

不可以,但是可以使用变量替换

if(isset($variablename))
{
$var "...some text";
}
else
{
$var "...some text";
}
<<<EOD
<h3>Caption</h3>
$var
EOD;

No。使用heredoc语法的插值与使用双引号时相同。您可以对变量或类方法进行简单的插值,但仅此而已。

这段代码

$foo = 'bar';
<<<EOD
$foo
baz($foo);
EOD;

将输出

bar
baz(bar)

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

最新更新