如何在PHP HEREDOC中调用数组成员?

mrm*_*mut 0 php string syntax heredoc

有没有一种方法可以在PHP HEREDOC语法中调用数组成员?

我知道HEREDOC可以使用$ strings,并且行得通。我尝试调用数组成员,但是失败了:

echo <<<EOF
<tr>
<td>$inner_array_member["ID"]</td>
<td>$inner_array_member["Date"]</td>
<td>$inner_array_member["Time"]</td>
<td>$inner_array_member["Published"]</td>
<td>$inner_array_member["Article"]</td>
<td><a href="rendered.php?editarticle=$inner_array_member["ID"]">EDIT</a></td>
</tr>
EOF;
Run Code Online (Sandbox Code Playgroud)

但是,如果我将字符串重命名为简单形式($Article = $inner_array_member["Article"]),然后调用它们,一切都很好。有没有办法解决?

kap*_*apa 5

提出问题之前,请阅读本手册。它明确指出

Heredoc文本的行为就像带双引号的字符串,没有双引号。这意味着heredoc中的引号不需要转义,但是上面列出的转义代码仍然可以使用。变量被扩展,但是在heredoc中使用字符串表示复杂变量时必须同样小心。

检查双引号字符串后,您将获得一个指向字符串解析的链接。您花一些时间阅读它,然后发现有两种方法:

echo <<<EOF
<tr>
<td>$inner_array_member[ID]</td>
<td>{$inner_array_member["ID"]}</td>
</tr>
EOF;
Run Code Online (Sandbox Code Playgroud)

我建议使用后者,{$inner_array_member["ID"]}它更具可读性,并且很少有人认出第一种形式(包括上周在阅读前的形式包括我)。第一种形式也更加有限。