Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP对象数组-检查数组键是否存在_Php_Arrays - Fatal编程技术网

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

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(

我从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\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很好,我不知道。我自己就试过了:-)丹尼尔,我对此持怀疑态度,这就是我测试它的原因。一旦我发现它有效,我就把你的答案投了赞成票。