无法通过索引获取数组的对象

时间:2013-01-17 15:09:24

标签: php arrays

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

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

数组转储为

enter image description here

$index = 2;

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

2 个答案:

答案 0 :(得分: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这么说。

答案 1 :(得分:0)

尝试

$index = '2';

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