Chcę przesłać tablicę asjocjacyjną protokołem SOAP w usłudze za pomocą nuSoap
udało mi się po omacku wystawić tablicę dwuwymiarową :
  1. <?
  2. require_once('nusoap.php');
  3. $namespace = "http://localhost/soap/s1.php";
  4. $server = new soap_server;
  5. $server->configureWSDL("StanyElementow");
  6. $server->wsdl->schemaTargetNamespace = $namespace;
  7. $server->wsdl->addComplexType('MyComplexType','complexType','array','all',
  8. array( 'ID' => array('name' => 'ID','type' => 'xsd:int'),
  9. 'stan' => array('name' => 'stan','type' => 'xsd:int')));
  10.  
  11. $server->wsdl->addComplexType('tablica','MyComplexType','array','','SOAP-ENC:Array',
  12. array( 'name'=>'oprawa','type'=>'tns:MyComplexType'),'tns:MyComplexType');
  13.  
  14. $server->register(
  15. 'getStanyElem',
  16. array('name'=>'xsd:string'),
  17. array('return'=>'tns:tablica'),
  18. $namespace,
  19. false,
  20. 'rpc',
  21. 'encoded',
  22. 'stan 0 oznacza ok , powyzej -cos innego');
  23.  
  24. function getStanyElem($name) {
  25. $elem[0][0]=1;
  26. $elem[0][1]=10;
  27. $elem[1][0]=2;
  28. $elem[1][1]=11;
  29. $elem[2][0]=5;
  30. $elem[2][1]=1;
  31. $elem[3][0]=7;
  32. $elem[4][1]=1;
  33.  
  34. return $elem;
  35. }
  36.  
  37. $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
  38. $server->service($HTTP_RAW_POST_DATA);
  39. ?>


teraz działa w ten sposób:
  1. .....
  2. <item xsi:type="xsd:">
  3. <item xsi:type=i"xsd:int">
  4. 1
  5. </item>
  6. <item xsi:type=i"xsd:int">
  7. 10
  8. </item>
  9. </item>
  10. <item xsi:type="xsd:">
  11. <item xsi:type=i"xsd:int">
  12. 2
  13. </item>
  14. <item xsi:type=i"xsd:int">
  15. 11
  16. </item>
  17. </item>
  18. .....



jest to zwykla tablica ale nie znamy ani typu ani nazwy pierwszych itemów. Czy nie powinno być ?
  1.  
  2. <elem xsi:type=i"xsd:int">
  3. 2
  4. </item>
  5. <item xsi:type=i"xsd:int">
  6. 11
  7. </item>
  8.  


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:


  1. <elem xsi:type=i"xsd:int">
  2. <ID xsi:type=i"xsd:int">
  3. 2
  4. </iID>
  5. <stan xsi:type=i"xsd:int">
  6. 11
  7. </item>
  8.  
  9.  

(..)lub coś w ten deseń...

Czuję że szkopół tkwi w deklaracji typów complexType tylko nie mam pojęcia jak to zrobić .