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