我使用<<<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";
}