【发布时间】:2013-09-27 12:20:34
【问题描述】:
我正在使用 Zend_Soap_Client 并遇到了这个问题:
<parent>
<child><name>abc</name></child>
<child><name>def</name></child>
</parent>
如果有多个子元素,则 Zend 返回数组,我可以像访问一样访问
$result->parent->child[0]->name
但如果只有一个子节点,它会返回如下对象:
$result->parent->child->name
您能否告诉我我的方法有什么问题或者我该如何克服它?
我的示例代码:
$client = new Zend_Soap_Client('url', array('wsdl'=>'url));
$result = $client->getResult();
我使用的是 zend 1.9。 PHP 的原生 SoapClient 也会出现同样的问题
谢谢!
【问题讨论】:
-
if(is_object($result->parent->child))....也许你可以做一些事情并将结果转换为数组
-
is_array() 应该被使用,因为 is_object() 在这两种情况下都是真的。数组也是一个对象。现在我正在使用它,但由于有几个这样的元素,我不认为这是最好的方法。谢谢!
-
您有两种情况:1) $result->parent->child 是一个数组,2) 是一个对象...如果不是数组,则使用 aux var 并强制转换 $result ->parent->child 到一个数组...我认为这是一个很好的方法
-
我试过了,但没有成功。我使用 (array) 进行投射和 $result->parent->child = array($result->parent-data->child) 但没有成功。它在 foreach 循环中抛出无效参数。如果我做错了,你能纠正一下代码吗?
-
向我展示你的 foreach 循环的结构,以便为你提供正确的代码;)
标签: php zend-framework soap