Php7中的数组到字符串转换

Php7中的数组到字符串转换,php,symfony,Php,Symfony,我正在尝试执行这段代码(它在php5上工作,现在我在php7上工作): 但我得到了这个错误: ContextErrorException:注意:数组到字符串的转换 提前感谢这取决于PHP5和PHP7中复杂变量解析方式的变化。请参见此处有关变量处理更改的章节: 不同之处在于,表达式: $this->links->$data[$te]['attributes']['ID'] 在PHP 5中的计算如下: $this->links->{$data[$te]['attribute

我正在尝试执行这段代码(它在php5上工作,现在我在php7上工作):

但我得到了这个错误:

ContextErrorException:注意:数组到字符串的转换


提前感谢

这取决于PHP5和PHP7中复杂变量解析方式的变化。请参见此处有关变量处理更改的章节:

不同之处在于,表达式:

$this->links->$data[$te]['attributes']['ID']
在PHP 5中的计算如下:

$this->links->{$data[$te]['attributes']['ID']}
在PHP7中是这样的:

($this->links->$data)[$te]['attributes']['ID']
有关简化示例,请参见


您需要将代码修改为显式的,或者根据需要使用
{}
,或者将其分解为两行。在本例中,如果您的代码在PHP5中运行良好,请选择前者,因为这将意味着行为在所有版本的PHP中保持一致。

显然在
$data[$te]['attributes']['URL']
下面还有另一个级别,它包含实际值和
$data[$te]['attributes']['URL']
是一个数组,它是
$te
的值。使用var_dump($data[$te]['attributes']['URL']);检查其中的内容plzprint\r on this->links->$data[$te]['attributes']['ID']返回相同的错误。而print\r on$data[$te]['attributes']['URL']返回一个字符串,其值是类似于“www.google.com”的链接嘿,谢谢你的回复,但不幸的是它不起作用:解析错误:语法错误,意外“}”您能粘贴更改后的内容吗?您可能希望在答案中使用第二个代码块(即,将其更改为显式使用Php5方式),通过将$data包装到{$data[$te]['attributes']['ID']}中来解决问题,如Php5所建议的。为PHP7建议的代码不起作用。谢谢对不起,我应该说得更清楚。它们在PHP5和PHP7中都是有效的,选择一个非常重要。如果您将其保留为原始版本,那么它在两个版本中的行为将有所不同。如果您有在PHP5中工作的代码,那么您应该使用PHP5行,如您所说。
($this->links->$data)[$te]['attributes']['ID']