PHP 7.2 中的循环多维数组

Looping multi-dimensional arrays in PHP 7.2

我刚刚升级到 PHP 7.2,我收到 PHP 致命错误:未捕获错误:无法将字符串偏移用作数组 用于此旧代码中的行 $myarray[$ex][0] = $oldarray[$z]['ID'];...

                $ex=0;
                $z=0;
                while($oldarray[$z]['ID']){
                    if(0==$duplicatename or !$duplicatename){
                        $ex++;
                        $myarray[$ex][0] = $oldarray[$z]['ID'];
                        /*...*/
                    }
                    $z++;
                }

我读到 PHP 的较新版本有 backward incompatible changes,所以我将违规行更改为 $myarray[$ex]['ID'] = $oldarray[$z]['ID'];,但我遇到了同样的错误。

这段代码来自的站点很旧,所以我真的期待有比这一段代码更多的问题。谁能告诉我我做错了什么。

这是 $oldarray 的 var_dump,我稍微编辑了一下内容...

array(4) { [0]=> array(11) { ["ID"]=> int(59480) ["boxid"]=> int(11158) ["galleryurl"]=> string(75) "http://..." ["gallerytitle"]=> string(63) "Gallery title goes here" ["gallerytype"]=> string(5) "photo" ["gallerydate"]=> int(1542544634) ["galleryactive"]=> string(1) "y" ["usersubmitted"]=> string(1) "n" ["userip"]=> NULL ["galleryhot"]=> string(1) "n" ["gallidentify"]=> int(372239531175) } 1=> array(11) { ["ID"]=> int(59324) ["boxid"]=> int(11158) ["galleryurl"]=> string(79) "http://..." ["gallerytitle"]=> string(45) "Gallery title goes here" ["gallerytype"]=> string(5) "photo" ["gallerydate"]=> int(1538477012) ["galleryactive"]=> string(1) "y" ["usersubmitted"]=> string(1) "n" ["userip"]=> NULL ["galleryhot"]=> string(1) "n" ["gallidentify"]=> int(428341079414) } }

是否可以使用 foreach 重构它?

http://php.net/manual/en/control-structures.foreach.php

如果你使用你会得到什么:

print_r($oldarray);
print_r($myarray);

?

你有可能在第二个数组维度中有对象...... 我们需要查看更大的代码来有效地帮助您...

如果你改变会发生什么:

$myarray[$ex][0] = $oldarray[$z]['ID'];

通过这种方式:

$myarray[$ex][0] = $oldarray[$z].ID;

?