致命错误:未捕获错误:无法使用stdClass类型的对象作为数组
$code = json_decode($src);echo $code["items"][0]["pagemap"]["cse_image"][0]["src"];
尝试var_dump:
object(stdClass)#7 (1) { ["items"]=> array(2) { [0]=> object(stdClass)#3 (1)
{ ["pagemap"]=> object(stdClass)#2 (1) { ["cse_image"]=> array(1) { [0]=> object(stdClass)#1 (1) { ["src"]=> string(118) "https://www.cs.auckland.ac.nz/en/about/ourdepartment/gibbons-lectures/_jcr_content/par/image.img.jpg/1490740692929.jpg" } } } }
[1]=> object(stdClass)#6 (1) { ["pagemap"]=> object(stdClass)#5
(1) { ["cse_image"]=> array(1) { [0]=> object(stdClass)#4 (1) { ["src"]=> string(87) "https://www.cs.ubc.ca/sites/cs/files/imagecache/
node_image/18924134402_622293178b_k.jpg" } } } } } }
所以,我不知道stdClass和Array之间的区别......
使用json_decode($src, true)
获取关联数组。
这是首选的方式,因为目前你得到混合数组和对象,你可能最终在疯狂的房子,试图使用这些:)
或者使用->
运算符来获取对象的属性。
目前您的商品位于:
$code->items[0]->pagemap->cse_image[0]->src
json_decode
函数有第二个参数专用于:将它设置为true
将返回一个关联数组,其中有一个JSON中的对象(在{ "curly": "braces" }
中)。
为了说明:
$a = json_decode('{ "b": 1 }', false);
var_dump($a->b);
// prints: int(1)
$a = json_decode('{ "b": 1 }', true);
var_dump($a['b']);
// prints: int(1)
请注意访问值的方式不同。