编辑: 我正在生成一个2D数组并将其作为json字符串存储在db中。当我需要修改数组中的任何内容时,我会获取json字符串并将其解码为
$myarray = (array)json_decode($jsonString);
数组转储为
$index = 2;
当我想要访问索引'2'的对象时$myarray[$index]
,我得到null
。请指导我做错了什么?
答案 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';
我认为您将数组定义为关联。