PHP 7.2无法将字符串偏移量用作eval中的数组

该代码在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()的代码:1

在eval函数内部,“ \ $ tempArray ['account'] [0]”是一个字符串,并再次与该字符串连接。 在这种情况下为什么会出现错误? 帮助我了解这一点以及如何解决此问题?

RENXIAODUO87 回答:PHP 7.2无法将字符串偏移量用作eval中的数组

我相信问题出在您对"\$tempArray['account'][0]".$det["CLASS"]." = \$dummyArray;"的连接上。如果输出字符串,则可以查看评估结果。您很可能忘记了$ det [“ CLASS”]周围的[]。在您的情况下,第一部分可能是字符串,而不是数组。

顺便说一句,我不确定您想做什么,但是我不确定您是否使用最简单的方法。

我不明白为什么它可以与php7.0一起使用。

本文链接:https://www.f2er.com/3059573.html

大家都在问