PHP对象数组-检查数组键是否存在

时间:2018-10-18 11:59:22

标签: 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(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_GetResult,因此上面会工作。

在未知顶级数组键的情况下,如何检查是否返回任何错误?

通常,父数组键的名称通常是方法调用的名称,后接Result。所以我正在考虑按照以下方式做些事情:

 if($result->$method . 'Result'->Errors->Result > 0){
     // display message
 }

但是显然以上语法是错误的。任何人都知道如何输出$method的值并将其链接到$result并附加Result

还有其他方法可以在不知道父数组键是什么的情况下检查Errors数组结果是否大于1吗?

1 个答案:

答案 0 :(得分:3)

尝试一下:

$result = $this->soapClient->__soapCall($method, $arguments);

$firstKey = key($result);

if (!empty($firstKey) && !empty($result->{$firstKey}->Errors->Result)) {
    // display message
}