Home > Backend Development > PHP Tutorial > Fatal Error: Can't use object 'stdClass' as array 宗师帮看看郁闷死了

Fatal Error: Can't use object 'stdClass' as array 宗师帮看看郁闷死了

WBOY
Release: 2016-06-13 12:07:46
Original
858 people have browsed it

Fatal Error: Can't use object 'stdClass' as array 大师帮看看郁闷死了

本帖最后由 baikujingling 于 2014-09-15 20:04:51 编辑
39行代码为:  $item=$resp["item_list"]['sp_item'][0];
-----------------------------------------------------------------------------------------------------------------------------

错误提示为:

com.caucho.quercus.QuercusErrorException: E:\TAE_SVN\TAE_SDK\apps\ceshi7\admin\core\GoodsCreate.php:39: Fatal Error: Can't use object 'stdClass' as array

-----------------------------------------------------------------------------------------------------------
前后代码为:


if ($dopost == 'caiji')
{
    if ($numIid != "" && rRuleNum($numIid))
    {
        $c = new TopClient;
        $c->appkey = $appkey;     //top appkey
        $c->secretKey = $secretKey;  //top secretkey
        //实例化具体API对应的Request类
        $req = new SpItemInfoListGetRequest;
$req->setId($numIid);
$req->setSiteKey('3zzd10741k7259kez673850e4346d6l1');
$resp = $c->execute($req);

//print_r($resp);

$item=$resp["item_list"]['sp_item'][0];

        if ($item)
        {
            $detail_url = $item["item_url"];   //商品链接
            $num_iid = $item["item_id"];        //商品ID
            $title = $item["title"];           //商品标题
            $nick = $item["nick"];            //卖家昵称
            $pic_url = "http://img1.tbcdn.cn/tfscom/".$item["pic_url"];      //商品主图
            
            $price = $item["price"];       //商品原价格
           // $freight_payer = $item["freight_payer"]; //取消了
            $freight_payer ="seller";//临时都设置为包邮

$sid=$item["seller_id"]; //卖家数字ID

            $num = 1000;            //商品数量 临时使用
            $item_imgs =$item["itemImgs"];       //商品图片列表
        }
        else
            $createMessage = '不存在这个商品';
        //print_r($resp);
    }
    else
    {
        $createMessage = "商品ID【不能为空】并且【必须是数字】。";
    }
}

------解决思路----------------------
年轻人,想当然是大忌!
楼主只有
$resp = $c->execute($req);
//print_r($resp);
$item=$resp["item_list"]['sp_item'][0];
并没有给出 print_r($resp) 的结果
你如何就能断定他就是 json 解码的结果呢?
我用 json 模拟一个出错的场景,并不表示是楼主的真实情况
只是说明这种错误可能在什么情况下出现

况且我也说了原因:你是把对象当做数组访问了


引用:
Quote: 引用:

我在帮楼主分析出错的原因,你捣什么乱

Quote: 引用:

Quote: 引用:


$o = json_decode('{"a":{"b":[1,2,3]}}');
echo $o['a']['b'][0];
报错 Fatal error:  Cannot use object of type stdClass as array 

可推知你是把对象当做数组访问了
要这样
echo $o->a->b[0];


也可这样
$o = json_decode('{"a":{"b":[1,2,3]}}',true);
echo $o['a']['b'][0];



这个你也没说原因。。。。。。。

应该是 json_decode  总是返回一个PHP对象   而不是数组

------解决思路----------------------
引用:
年轻人,想当然是大忌!
楼主只有
$resp = $c->execute($req);
//print_r($resp);
$item=$resp["item_list"]['sp_item'][0];
并没有给出 print_r($resp) 的结果
你如何就能断定他就是 json 解码的结果呢?
我用 json 模拟一个出错的场景,并不表示是楼主的真实情况
只是说明这种错误可能在什么情况下出现

况且我也说了原因:你是把对象当做数组访问了


Quote: 引用:

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template