0

编辑: 我正在生成一个二维数组并将其作为 json 字符串存储在 db 中。当我需要修改数组中的任何内容时,我会获取 json 字符串并将其解码为

$myarray = (array)json_decode($jsonString);

数组的转储为

在此处输入图像描述

$index = 2;

当我想访问索引“2”处的对象时,$myarray[$index]我得到null. 请指导我做错了什么?

4

2 回答 2

2

在您的评论中,您说这个“数组”是从 JSON 解码的。使用时,作为第二个参数json_decode发送。true这告诉它在解码时制作数组而不是对象。

您遇到了麻烦,因为数组被解码为一个对象,您使用->而不是[].

$newArray = json_decode($jsonString, true);

更新:你试图这样做(array)json_decode($jsonString),但没有奏效。那是因为 PHP 在类型转换方面很愚蠢。

这是 PHP 文档的引述:

如果将对象转换为数组,则结果是一个数组,其元素是对象的属性。键是成员变量名称,有一些值得注意的例外:整数属性是不可访问的;私有变量在变量名前面加上类名;受保护的变量在变量名前有一个“*”。这些前置值在两边都有空字节。这可能会导致一些意外行为。

来源: http: //php.net/manual/en/language.types.array.php#language.types.array.casting

所以,它不起作用,因为 PHP 是这么说的。

于 2013-01-17T15:35:16.063 回答
0

尝试

$index = '2';

我认为您将数组定义为关联的。

于 2013-01-17T15:14:55.387 回答