【发布时间】:2019-11-21 09:06:28
【问题描述】:
代码在 php 7.0 中运行。移至 7.2 版本后出现错误。 我需要帮助来理解这一点。 我有一个 $map 和 $tempArray $locMap 的 print_r 值如下所示
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 函数中,"\$tempArray['account'][0]" 是一个字符串,并再次与该字符串连接。 为什么在这种情况下会出现错误? 帮助我理解这一点以及如何解决此问题?
【问题讨论】:
-
这里为什么还需要 eval?
-
不确定这里是否使用了 eval 。但它是一个古老的代码。我知道 eval 可以将字符串评估为 php 代码