PHP对象数组-检查数组键是否存在
我从soap调用返回了以下对象数组:PHP对象数组-检查数组键是否存在,php,arrays,Php,Arrays,我从soap调用返回了以下对象数组: $result = $this->soapClient->__soapCall($method, $arguments); var_dump($result); object(stdClass)#4 (1) { ["Jobs_GetResult"]=> object(stdClass)#5 (3) { ["Jobs"]=> array(4) { [0]=> object(
$result = $this->soapClient->__soapCall($method, $arguments);
var_dump($result);
object(stdClass)#4 (1) {
["Jobs_GetResult"]=> object(stdClass)#5 (3) {
["Jobs"]=> array(4) {
[0]=> object(stdClass)#7 (19) {
["JobID"]=> int(55082846)
["JobName"]=> string(18) "Fix xyz"
}
}
["Errors"]=> object(stdClass)#10 (2) {
["Result"]=> int(0)
["Message"]=> string(0) ""
}
["RecordCount"]=> int(1)
}
}
我想检查是否有任何错误-当父数组键已知时,这很容易,例如:
if($result->Jobs_GetResult->Errors->Result > 0){
// display message
}
问题是,我不知道对于大多数调用,顶级数组键的名称是什么,因为我使用的是通用方法-在上面的示例中,它是Jobs\u GetResult
,所以上面的方法可以工作
在顶级数组键未知的情况下,如何检查是否返回了任何错误
通常,父数组键的名称通常是附加了Result
的方法调用的名称。所以我想做一些事情,大致如下:
if($result->$method . 'Result'->Errors->Result > 0){
// display message
}
但显然上述语法是错误的。任何人都知道如何输出$method
的值,并将其链接到$result
并将其附加到result
是否有其他方法可以在不知道父数组键是什么的情况下检查错误数组结果是否大于1?尝试以下方法:
$result = $this->soapClient->__soapCall($method, $arguments);
$firstKey = key($result);
if (!empty($firstKey) && !empty($result->{$firstKey}->Errors->Result)) {
// display message
}
也许一个简单的foreach就可以完成这项工作?如果您使用
foreach($result as$key=>$value){}
可以在$value->Errors->result
no中获得错误?您可以对对象使用key()
吗?根据手册,它看起来不像。您可以先将Std
对象强制转换为数组,然后它将按照您的预期工作。@jeroen您实际上不需要强制转换它,只需在一个对象上尝试它就可以了。我对此表示怀疑also@RiggsFolly很好,我不知道。我自己就试过了:-)丹尼尔,我对此持怀疑态度,这就是我测试它的原因。一旦我发现它有效,我就把你的答案投了赞成票。