我正在查询API,我得到的响应是一个多维对象(stdClass),它也包含数组。我需要能够检查响应是错误还是成功。如果响应成功,我需要返回TRUE。如果响应是错误,我需要返回响应中包含的错误消息。成功和错误的响应格式完全不同。错误的响应如下所示:
object(stdClass)#837 (3) {
["errors"]=> array(1) {
[0]=> object(stdClass)#838 (2) {
["code"]=>int(324)
["message"]=>string(80) "Duration too long, maximum:30000, actual:37081 (MediaId: snf:840912013693931526)"
}
}
["httpstatus"]=>int(400)
["rate"]=>NULL
}
成功的回应如下:
object(stdClass)#837 (27) {
["created_at"]=> string(30) "Sun Mar 12 13:41:43 +0000 2017"
["id"]=> int(840920745073102850)
["id_str"]=> string(18) "940920795073102850"
["text"]=> string(32) "The Details Posted Here"
["truncated"]=> bool(false)
["entities"]=> object(stdClass)#838 (5) {
["hashtags"]=>
........ Way More is in the Response but it does not matter...
我已尝试将响应更改为数组,然后使用isset确定是否为错误,如果是,则获取错误详细信息的值,如下所示:
$RESPONSEARRAY = (array) $RESPONSE;
(isset($RESPONSEARRAY["errors"])) {
$ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]['code'];
$ERRORMSG_MESSAGE = $RESPONSEARRAY['errors'][0]['message'];
$ITWASANERROR = $ERRORMSG_CODE.": ".$ERRORMSG_MESSAGE;
return $ITWASANERROR;
} else {
return true;
}
但是执行上述操作会给我以下错误:
Fatal error: Cannot use object of type stdClass as array
任何人都可以建议一种方法来做我正在尝试做的事情,在服务器上的开销最小。也许无需将stdClass对象转换为数组,或者如果必须这样做,那就没关系,但我只是需要它才能工作。任何人可以提供的帮助都将受到超级赞赏。
答案 0 :(得分:1)
以下是访问数组内对象的正确方法。
$RESPONSEARRAY = (array) $RESPONSE;
if(isset($RESPONSEARRAY["errors"])) {
$ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]->code;
$ERRORMSG_MESSAGE = $RESPONSEARRAY['errors'][0]->message;
$ITWASANERROR = $ERRORMSG_CODE.": ".$ERRORMSG_MESSAGE;
return $ITWASANERROR;
} else {
return true;
}
答案 1 :(得分:1)
lib.subMenu = HMENU
lib.subMenu {
1 = TMENU
1 {
wrap = <ul id="submenu">|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li>
}
ACT = 1
ACT {
wrapItemAndSub = <li class="active">|</li>
}
}
// -1 = current page
entryLevel = -1
// Set entry level to -2 (this is the parent page), if the current page has
// no subpages.
entryLevel.override = -2
entryLevel.override.if {
negate = 1
isTrue.numRows {
table = pages
where = pid=this
}
}
}
你可以得到结果:
$RESPONSEARRAY = (array) $RESPONSE;
因此 ["errors"]=>
array(1) {
[0]=>
object(stdClass)#1 (2) {
["code"]=>
int(324)
["message"]=>
string(80) "Duration too long, maximum:30000, actual:37081 (MediaId: snf:8
40912013693931526)"
}
}
["httpstatus"]=>
int(400)
应为$ERRORMSG_CODE= $RESPONSEARRAY['errors'][0]['code'];
。
等等