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;
?
我刚刚升级到 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;
?