未捕获错误:无法使用stdClass类型的对象作为数组

问题描述 投票:-2回答:2

致命错误:未捕获错误:无法使用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之间的区别......

php arrays json stdclass
2个回答
2
投票

使用json_decode($src, true)获取关联数组。

这是首选的方式,因为目前你得到混合数组和对象,你可能最终在疯狂的房子,试图使用这些:)

或者使用->运算符来获取对象的属性。

目前您的商品位于:

$code->items[0]->pagemap->cse_image[0]->src

-1
投票

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)

请注意访问值的方式不同。

进一步阅读:http://php.net/json_decode

© www.soinside.com 2019 - 2024. All rights reserved.