SOAP: Возвращение массива xsd: любые элементы в PHP

Мне нужно вернуть ответ на вызов SOAP в соответствии с WSDL. Все работает нормально, за исключением возврата xsd: любой элемент. Часть WSDL, с которой у меня проблема (это для предполагаемого ответа).


     xsd: complexType name = "data"
         XSD: последовательность
          xsd: любой minOccurs = "1" maxOccurs = "неограниченный"
         XSD: последовательность
     XSD: ComplexType

То, что я пробовал:


     foreach ($ data as $ name => $ value) {
         $ object-> data-> any [$ name] = $ value;
     }
     return $ object;

SOAP-вызов возвращает ответ следующим образом:


     ..response>
     -data> value1value2value3value4- / данные>
     ... / ответ>

Хотя перед возвратом объекта можно увидеть, что объект создан так, как он должен был быть:


     $ object-> data-> any [name1] = value1
     $ object-> data-> any [имя2] = значение2

     и т.д...

Но в возвращаемом asnwer все значения просто помещаются в одну строку в одно поле возврата. Этот код и возврат корректно работают с любым другим типом поля (например, xsd: string и т. Д.).

Как вернуть объект в случае xsd: any type, чтобы получить ответ с несколькими полями в соответствии с именами и значениями?

благодаря

Решила проблему.

Мне нужно было создать объект SoapVar для поля.


     $ o = new Object ();
     $ o-> field = $ value;
     $ object-> data = new SoapVar (поле $, XSD_ANYTYPE);
     return $ object;

благодаря

Это также должно работать:

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