udało mi się po omacku wystawić tablicę dwuwymiarową :
<? require_once('nusoap.php'); $namespace = "http://localhost/soap/s1.php"; $server = new soap_server; $server->configureWSDL("StanyElementow"); $server->wsdl->schemaTargetNamespace = $namespace; $server->wsdl->addComplexType('MyComplexType','complexType','array','all', $server->wsdl->addComplexType('tablica','MyComplexType','array','','SOAP-ENC:Array', $server->register( 'getStanyElem', $namespace, false, 'rpc', 'encoded', 'stan 0 oznacza ok , powyzej -cos innego'); function getStanyElem($name) { $elem[0][0]=1; $elem[0][1]=10; $elem[1][0]=2; $elem[1][1]=11; $elem[2][0]=5; $elem[2][1]=1; $elem[3][0]=7; $elem[4][1]=1; return $elem; } $server->service($HTTP_RAW_POST_DATA); ?>
teraz działa w ten sposób:
..... <item xsi:type="xsd:"> <item xsi:type=i"xsd:int"> 1 </item> <item xsi:type=i"xsd:int"> 10 </item> </item> <item xsi:type="xsd:"> <item xsi:type=i"xsd:int"> 2 </item> <item xsi:type=i"xsd:int"> 11 </item> </item> .....
jest to zwykla tablica ale nie znamy ani typu ani nazwy pierwszych itemów. Czy nie powinno być ?
<elem xsi:type=i"xsd:int"> 2 </item> <item xsi:type=i"xsd:int"> 11 </item>
Dobra ale ja chciałem przesłać tablicę
$elem= array('1'=>0, '2'=>0, '3'=>1, '4'=>0, '8'=>1 );
i domyślam się powinno wygladac:
<elem xsi:type=i"xsd:int"> <ID xsi:type=i"xsd:int"> 2 </iID> <stan xsi:type=i"xsd:int"> 11 </item>
(..)lub coś w ten deseń...
Czuję że szkopół tkwi w deklaracji typów complexType tylko nie mam pojęcia jak to zrobić .