尝试修改数组时,不能使用stdClass类型的对象作为数组

时间:2011-05-10 11:58:22

标签: php

我刚从我的数据库读取了一个简单的数组json_encoded,所以我解码了它并尝试更改索引0处的值,但是我得到以下错误

尝试修改数组时,

不能将stdClass类型的对象用作数组

任何帮助?

2 个答案:

答案 0 :(得分:3)

默认情况下,json字符串被解码为对象而不是数组。 所以你必须使用json_decode的第二个参数。所以你的电话应该是这样的:

$array = json_decode($string, true);

答案 1 :(得分:2)

JSON编码的实体可以是对象或数组 - 在您的示例中,它似乎是一个对象(类型为stdClass)。您可以将其作为对象引用

$jsonProperty = $decoded->property;

将原始JSON对象保存为数组

$encodedJson = json_encode((array) $object);

或强制解码为关联数组

$decodedJson = json_decode($json, true);

就个人而言,为了清楚起见,我会使用第一个选项并使用PHP的对象访问符号引用JSON对象。