2017-10-09 54 views
6

我試圖執行該代碼(這是工作在PHP5,現在我'上PHP7):Array對PHP7字符串轉換

$this->links->$data[$te]['attributes']['ID'] = $data[$te]['attributes']['URL']; 

但我得到這個錯誤:

ContextErrorException: Notice: Array to string conversion

在此先感謝

+0

顯然,$ data [$ te] ['attributes'] ['URL']'包含實際值和$ data [$ te] ['attributes'] ['URL']以下的另一層。 '是一個數組 – RiggsFolly

+1

'$ te'的值是什麼? – mega6382

+0

use var_dump($ data [$ te] ['attributes'] ['URL']);並檢查它是什麼plz –

回答

7

這是下降的變化而變化多麼複雜的變量在PHP 5中得到解決VS 7.請參閱部分上更改變量處理這裏:http://php.net/manual/en/migration70.incompatible.php

不同的是,表達式:

$this->links->$data[$te]['attributes']['ID'] 

是這樣評價在PHP 5:

$this->links->{$data[$te]['attributes']['ID']} 

和像這樣在PHP 7:

($this->links->$data)[$te]['attributes']['ID'] 

用於查看https://3v4l.org/gB0rQ一個簡單的例子。

您需要將代碼修改爲明確的,或者通過適當地使用{}或將其分解爲兩行。在這種情況下,如果您的代碼在PHP 5中運行良好,請選擇前者,因爲這意味着所有版本的PHP中的行爲都保持一致。

+0

嘿,感謝您的回覆,但不幸的是它不工作: 解析錯誤:語法錯誤,意外的'}' – CrazyDeveloper

+0

你能粘貼你改變它的內容嗎?您可能想要在答案中使用第二個代碼塊(即,將其更改爲顯式使用PHP 5方式) – iainn

+1

通過將$ data包裝在{$ data [$ te] ['attributes'] ['ID']}中解決了問題。 ,正如Php5所建議的那樣。爲PHP7建議的代碼不起作用。謝謝 – CrazyDeveloper