我们可以在<<中使用PHP iF语句吗?

时间:2013-05-09 16:15:11

标签: php syntax

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

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

5 个答案:

答案 0 :(得分:7)

不,因为<<<区块内的所有内容(称为&#34; HEREDOC&#34;)都是字符串。

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

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

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

print <<<EOD
<h3>Caption</h3>
{$outputVar}
EOD;

答案 1 :(得分:6)

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

然而,complex variable expressions中有一种解决方法。事先声明一个效用函数,并将其赋值给变量。

$if = function($condition, $true, $false) { return $condition ? $true : $false; };

然后通过以下方式使用它:

echo <<<TEXT

   content

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

TEXT;

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

没有。使用heredoc语法的插值与使用双引号时的插值相同。你可以对变量或类方法进行简单的插值,但就是这样。

此代码

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

将输出

bar
baz(bar)

答案 4 :(得分:0)

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