![](/img/trans.png)
[英]Drupal 7 custom form Cannot use string offset as an array error with php 7.2
[英]PHP 7.2 Cannot use string offset as an array in eval
該代碼在 php 7.0 中運行。 移至 7.2 版本后出現錯誤。 我需要幫助來理解這一點。 我有一個 $map 和 $tempArray print_r 的 $locMap 值如下所示
Array
(
[1] => Array
(
[ID] => 1
[LEVEL] => 1
[NAME] => Operations1
[CLASS] => ["e2"]["00"]
)
[2] => Array
(
[ID] => 2
[LEVEL] => 1
[NAME] => POperations2
[CLASS] => ["e2"]["01"]
)
[26] => Array
(
[ID] => 26
[LEVEL] => 2
[NAME] => Operations3
[CLASS] => ["e2"]["01"]["e2"]["00"]
)
)
$tempArray 的 print_r 值如下
Array
(
[account] => Array
(
[0] => Array
(
[id] => 1000
[name] => Homes
[level] =>
[rno] => 9
)
)
)
循環這個 $map 如下
foreach ($map $rec=>$det) {
$dummyArray = array();
$dummyArray['id'] = $det['ID'];
$dummyArray['CLASS'] = $det['CLASS'];
eval("\$tempArray['account'][0]".$det["CLASS"]." = \$dummyArray;");
}
錯誤:不能在 ************* 中使用字符串偏移作為數組:eval()'d code:1
在 eval function 內部,"\$tempArray['account'][0]" 是一個字符串,並再次與該字符串連接。 為什么在這種情況下會出現錯誤? 幫助我理解這一點以及如何解決此問題?
我相信問題出在你的串聯"\$tempArray['account'][0]".$det["CLASS"]." = \$dummyArray;"
. 如果你 output 字符串,你可以看到評估了什么。 很可能,您忘記了 $det["CLASS"] 周圍的 []。 在您的情況下,第一部分可能是字符串,而不是數組。
順便說一句,我不確定你想做什么,但我不確定你是否使用最簡單的方法。
我不明白為什么它適用於 php7.0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.