1

我有一个网络服务查询的结果,我想从中获取一些值。它有效,但我有 PHP 通知问题,所以我可能做错了什么。

这是$items变量内容:

stdClass Object
(
    [response] => stdClass Object
        (
            [0] => stdClass Object
                (
                    [id] => 275
                    [corpid] => 16107
                    [name] => default
                    [description] => 
                    [status] => ok
                    [nbSteps] => 7
                )

            [defaultItem] => 275
        )

    [error] => 
    [status] => success
)

所以我尝试了类似的东西:

foreach ( $items->response AS $key => $item ) {
    if ( $item->name == 'default' ){ // Line 106
        $Id = $item->id;
    }
}

它有效,$Id等于 275 但 PHP 返回一个通知:

Notice: Trying to get property of non-object in /home/web/dev/webservice-form.php on line 106

任何帮助将不胜感激。

编辑:这是 $item 变量的内容(取自 foreach 循环):

stdClass Object
(
    [id] => 275
    [corpid] => 16107
    [name] => default
    [description] => 
    [status] => ok
    [nbSteps] => 7
)

275

请注意,“275”是结果的一部分。

4

2 回答 2

2

问题是defaultItem您的内部对象中的条目。您的循环将在某个时候到达此位置并尝试访问name不存在的 ,因为没有对象。

应该很容易解决is_object()

于 2013-02-26T13:10:45.720 回答
2

您有混合类型,一种是对象,一种是 int 值,请尝试检查每个项目是什么:

foreach ( $items->response AS $key => $item ) {

    if(is_object($item) && $item->name == 'default'){ // Line 106
        $Id = $item->id;
    }
    else {
         $Id = $item; // assume it's scalar value
    }
}

显然,这取决于您需要在其中添加哪些其他检查。

于 2013-02-26T13:22:50.723 回答