SOAP:返回PHP中xsd:any元素的数组

SOAP:返回PHP中xsd:any元素的数组,php,soap,xsd,wsdl,Php,Soap,Xsd,Wsdl,我需要根据WSDL返回SOAP调用应答。除了返回xsd:any元素外,一切正常。WSDL的一部分,我有问题(这是一个例外答案) xsd:complexType name=“数据” xsd:序列 xsd:any minOccurs=“1”maxOccurs=“无界” xsd:序列 xsd:complexType 我尝试的是: foreach($data as $name=>$value) { $object->data->any[$name] = $value; }

我需要根据WSDL返回SOAP调用应答。除了返回xsd:any元素外,一切正常。WSDL的一部分,我有问题(这是一个例外答案)

xsd:complexType name=“数据” xsd:序列 xsd:any minOccurs=“1”maxOccurs=“无界” xsd:序列 xsd:complexType 我尝试的是:

foreach($data as $name=>$value) { $object->data->any[$name] = $value; } return $object; foreach($name=>$value形式的数据){ $object->data->any[$name]=$value; } 返回$object; SOAP调用返回如下答案:

..response> -data>value1value2value3value4-/data> .../response> …响应> -数据>值1value2value3value4-/data> …/答复> 虽然在返回对象之前,可以看到该对象是按其本应的方式创建的:

$object->data->any[name1] = value1 $object->data->any[name2] = value2 etc... $object->data->any[name1]=value1 $object->data->any[name2]=value2 等 但是在returnasnwer中,所有的值都被放在一个字符串中的一个返回字段中。此代码和返回代码可正确用于任何其他字段类型(例如xsd:string等)

在xsd:any类型的情况下,应该如何返回对象,以根据名称和值获得多个字段的答案

谢谢

解决了这个问题

我必须为字段创建SoapVar对象

$o = new Object(); $o->field = $value; $object->data = new SoapVar($field, XSD_ANYTYPE); return $object; $o=新对象(); $o->field=$value; $object->data=newsoapvar($field,XSD_ANYTYPE); 返回$object; 谢谢

这也应该有效:

$object->data = new SoapVar($data, SOAP_ENC_OBJECT);
$object->data = new SoapVar($data, SOAP_ENC_OBJECT);