单个数组元素成为Zend_Soap_Client的对象

时间:2013-09-27 12:20:35

标签: php zend-framework soap

我正在使用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

也会出现同样的问题

谢谢!

1 个答案:

答案 0 :(得分:8)

我个人认为不需要使用Zend_Soap_Client而不是SoapClient,因为Zend版本没有添加任何有益的东西,但另一方面,该解决方案适用于两者:

原始SoapClient中有一个选项数组参数可以接受大量内容,特别是下面的内容(ref):

  

功能选项是SOAP_SINGLE_ELEMENT_ARRAYS的位掩码,...

使用此选项,soap响应中的所有数组结构如果只包含一个,则不会缩减为单个元素,而是按原样保留。您总是访问一个数组,这比根据内容切换更容易。

示例:

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