下面的示例中有两种不同的语法.一个工作,另一个不工作!实际上我希望它反过来.第二种语法对我来说看起来很糟糕.
<?php
class Vodoo
{
public $foo = array();
public function __construct()
{
$this->foo = array('one' => 1, 'two' => 2, 'three' => 3);
}
public function getFoo()
{
$return = <<<HEREDOC
<p>$this->foo[one]</p> // outputs: "Array[one]"
<p>{$this->foo['two']}</p> // outputs correct: "2"
HEREDOC;
return $return;
}
}
$bar = new Vodoo;
echo $bar->getFoo();
?>
Run Code Online (Sandbox Code Playgroud)
是否可以使用这些花括号并引用HEREDOC内的关联索引?
编辑:花括号内的表达式必须以它出现在字符串外面的方式编写!
是的,这是有效的.
在heredocs和双引号字符串中,您可以使用语法{$...},其中...有一个有效的PHP表达式$.
例如,这类似于#{...}Ruby中的语法.
文档中有一个例子:http://php.net/manual/en/language.types.string.php#example-71
查看复杂的卷曲语法