我正在使用<<<EOD
输出一些数据。我的问题是如何在<<<EOD
语法中使用php if条件?
我可以像这样使用它吗
<<<EOD
<h3>Caption</h3>
if(isset($variablename))
{
echo "...some text";
}
else
{
echo "...some text";
}
EOD;
答案 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";
}