有没有办法在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"]
),并调用它们,一切都很好。有没有办法解决这个问题?
答案 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;