我有一个来自webservice查询的结果,我想从中获取一些值。它有效,但我有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'是结果的一部分。
答案 0 :(得分:2)
问题是内部对象中的defaultItem
条目。您的循环将在某个时刻达到此目的并尝试访问不存在的name
,因为没有对象。
应该可以使用is_object()
轻松解决。
答案 1 :(得分: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
}
}
显然,这将取决于您还可以在其他任何需要添加的检查中获得的其他内容。