我有这个:
{"sliders":{"c1":{"content":[{"title":1,"content_type":"image_content"}]}}}
我可以使用以下代码获得标题:
$decoded = json_decode($list[$i]['info'],true);
$json = $decoded['sliders']['c1']['content'][0]);
$x = $json['title'];
echo $x;
当我想要获取content_type ...
时$y = $json['content_type'];
echo $y;
...然后它显示我未定义的索引错误..为什么会发生这种情况?
答案 0 :(得分:1)
首先:陈述......
$json = $decoded['sliders']['c1']['content'][0]);
...应该为过多的右括号提供语法错误 )
$ decoding 的var_dump显示了这一点:
object(stdClass)#1 (1) {
["sliders"]=>
object(stdClass)#2 (1) {
["c1"]=>
object(stdClass)#3 (1) {
["content"]=>
array(1) {
[0]=>
object(stdClass)#4 (2) {
["title"]=>
int(1)
["content_type"]=>
string(13) "image_content"
}
}
}
}
}
因此,整个变量 $ decoding 是对象的对象。
对象 content 是一个数组一个(在本例中)对象: content [0] 。
因此,您可以访问这两个项目 - 在适当情况下使用对象和数组表示法:
echo $decoded->sliders->c1->content[0]->title;
echo $decoded->sliders->c1->content[0]->content_type;
OR
$json = $decoded->sliders->c1->content[0];
echo $json->title;
echo $json->content_type;
......两者都会给出:
1
image_content