【发布时间】:2018-12-07 22:35:29
【问题描述】:
我刚刚升级到 PHP 7.2,我收到 PHP Fatal error: Uncaught Error: Cannot use string offset as an array for line $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) "画廊标题在这里" ["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) "画廊标题在这里" ["gallerytype"]=> string(5) "photo" ["gallerydate "]=> int(1538477012) ["galleryactive"]=> string(1) "y" ["usersubmitted"]=> string(1) "n" ["userip"]=> NULL ["galleryhot"]= > string(1) "n" ["gallidentify"]=> int(428341079414) } }
【问题讨论】:
-
$oldarray看起来像什么?$myarray长什么样子? -
你可以做一个 is_array() 检查元素是否确实是数组
-
@miken32 这是旧代码,不是最好的,但 $oldarray[integer]['string'] 和 $myarray 现在与 $oldarray 的格式相同。
-
var_dump它并编辑您的问题以包含该信息。在minimal reproducible example 上查看更多信息。 -
你的错误信息也会告诉你究竟是哪一行导致了这个问题。
标签: php arrays while-loop php-7.2