首页 > 解决方案 > for循环php时非法字符串偏移'id'

问题描述

我有这个问题,我认为很容易解决这个问题,但我无法处理如何做到这一点;x

编辑:我知道为什么我会收到此错误,$user->items[$i] 是一个字符串,但仍然... idk 我该如何解决它

我收到错误的代码部分如下所示

                            for($i=0;$i <= 10; $i++){
                            if($user->items[$i]["id"] != $item->id){
                                $user->items = json_encode(array_merge($user->items, $drop_item));
                            } else {
                                $user->items = json_encode(array_merge($user->items[$i], ['amount' => 99]));
                            }
                        }

当我运行我的代码时,我遇到了这个错误 Illegal string offset 'id'

如果重要的话,数组看起来像这样

[{"id":12,"amount":1,"upgrade":0},{"id":13,"amount":1,"upgrade":0}]

标签: php

解决方案


在循环的第一次迭代中,您$user->items使用字符串(的结果json_encode())覆盖。在下一次迭代中,它不再是一个数组,因此您会收到一条错误消息。

您还假设数组中总是有 10 个项目。如果没有怎么办?


推荐阅读