微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Heredoc语法时数组到字符串的转换

如何解决使用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

Demo on 3v4l.org

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。