最初如果列表中有一个项目,它将返回一个对象而不是一个对象的数组。我使用:
修复了这个问题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/>';
}
}
答案 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)) {
我认为这是对原版的更优雅的替代......