如何解决使用Heredoc语法时数组到字符串的转换
我遇到一个奇怪的问题,似乎我无法使用Heredoc语法回显数组值:
<?PHP
$arr = array(
array("string 1"),array("string 2"),array("string 3")
);
// string 3
echo $arr[2][0];
// Notice: Array to string conversion
// Var dump: string(8) "Array[0]"
echo <<<EOT
$arr[2][0]
EOT;
我觉得这是我现在应该知道的东西,但是我找不到发生这种情况或如何解决的任何原因。有人愿意启发我吗?
解决方法
在此文档中使用{}
:
echo <<<EOT
{$arr[2][0]}
EOT;
输出:
string 3string 3
在字符串中包含数组或对象引用时,需要使用{}
complex parsing。链接中的信息:(示例也可以在此处找到)
,复杂(卷曲)语法
之所以称为复杂不是因为语法复杂,而是因为 它允许使用复杂的表达式。
任何带字符串的标量变量,数组元素或对象属性 可以通过此语法包括表示形式。只需写 表达式与出现在字符串外部的方式相同,并且 然后将其包装在{和}中。由于{无法转义,因此此语法将 仅当$紧跟{之后。使用{$ 得到文字{$。
摘自Strings的PHP手册中的示例:
//有效。使用多维数组时,请始终在数组周围使用大括号
//在字符串中时
echo“这有效:{$ arr ['foo'] [3]}”;
由于Heredoc语法等效于带引号的字符串,因此您需要在值周围使用花括号:
echo <<<EOT
{$arr[2][0]}
EOT;
输出:
string 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。