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

时间:2018-01-28 12:06:28

标签: php arrays json stdclass

  

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

2 个答案:

答案 0 :(得分:2)

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

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

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

目前您的商品位于:

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

答案 1 :(得分:-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