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

时间:2014-08-05 09:55:44

标签: php string syntax heredoc

有没有办法在PHP HEREDOC语法中调用数组成员?

我知道HEREDOC可以采取$ string,这是有效的。我试过调用数组成员,但失败了:

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;

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

3 个答案:

答案 0 :(得分:5)

在提出问题之前,请先阅读手册。 It clearly states

  

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

检查双引号字符串后,您会看到string parsing的链接。你需要一些时间来阅读它,你发现你有两种方法:

echo <<<EOF
<tr>
<td>$inner_array_member[ID]</td>
<td>{$inner_array_member["ID"]}</td>
</tr>
EOF;

我推荐后者,{$inner_array_member["ID"]},它更具可读性,很少有人认识到第一种形式(包括我在上周阅读之前)。第一种形式也更有限。

答案 1 :(得分:0)

使用大括号,例如{$inner_array_member['Published']}

答案 2 :(得分:0)

试试这个

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;