处理PHP SOAP中的空列表

时间:2015-06-15 23:20:44

标签: php soap

最初如果列表中有一个项目,它将返回一个对象而不是一个对象的数组。我使用:

修复了这个问题

https://eirikhoem.wordpress.com/2008/03/13/array-problems-with-soap-and-php-updated/

pvpython /dir/script.py

但是当列表中没有项目时我遇到了问题。

到目前为止,我提出的最好的是:

$x = new SoapClient($wsdl, array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));

原来是

$occulist = $result->GetWebOccurrencesResult->OccuList;
if (!empty((array)($occulist))) {
    foreach($occulist->TOccu as $occurrence) {
        echo $occurrence->Prog_Name . ' running from ' . $occurrence->StartDate . ' to ' . $occurrence->EndDate . '<br/>';
    }
}

2 个答案:

答案 0 :(得分:0)

我不明白你在这里想要达到的目标,所以如果你能在评论中澄清,那就太好了。

我从你的问题中得到的是你想要在数组为空时处理,但想要一个干净的方法呢?你在那里的循环会做你需要的,但这是另一种选择:

do {
    foreach($occulist->TOccu as $occurrence) {
        echo $occurrence->Prog_Name . ' running from ' . $occurrence->StartDate . ' to ' . $occurrence->EndDate . '<br/>';
    }
} while(empty((array)($occulist)) !== FALSE);

因此,当$occulist数组不为空时,您正在循环遍历foreach。 你甚至可以这样做:

while((array)$occulist !== FALSE) {
    foreach(....) {
        ...
    }
}

答案 1 :(得分:0)

在我的服务器上使用Windows和PHP 5.4.23:

if (!empty((array)($occulist))) {

给出以下错误:

Parse error: syntax error, unexpected '(array)' (array) (T_ARRAY_CAST)

我使用以下方法修复了它:

if (get_object_vars($occulist)) {

我认为这是对原版的更优雅的替代......