NuSOAP etiketleri yinelenen

4 Cevap php

I nusoap sabun webcoder bağlanmak için kullanıyorum. Sınıf hizmetine gönderir xml bir dizi inşa edilmiştir, yani:

$params = array("param1" => "value1", "param2" => "value1");
$client->call('HelloWorld', $params, 'namespace', 'SOAPAction');

Bu çalışıyor. Çok boyutlu dizi de güzel bir iç içe xml iletisi oluşturur.

I aynı ada sahip iki etiketleri gerektiğinde ben bir sorunla karşılaşırsanız:

<items>
   <item>value 1</item>
   <item>value 2</item>
</item>

$params = array("items" => array("item" => "value 1", "item" => "value 2"));

Dizideki ikinci öğe neden olan ilk yazar:

<items>
   <item>value 2</item>
</item>

Bu nasıl elde edebilirsiniz?

4 Cevap

Sorun, iç dizi ile ()

$test_array = array("item" => "value 1", "item" => "value 2");

Tek bir tuş ("item") ile bir dizi oluşturur.

Bu deneyin ve eğer çalışırsa bakın:

$params = array("items" => array("item" => array("value 1", "value 2")));

Hiçbir garanti olsa ... Ben bir long zamanında NuSOAP kullanmadım ve PHP test burada yüklü değil.

Çekirdek sorun geçersiz PHP kodu yazıyoruz

$x = array("items" => array("item" => "value 1", "item" => "value 2")); 
var_dump($x);

array(1) {
  ["items"]=>
  array(1) {
    ["item"]=>
    string(7) "value 2"
  }
}

Hangi tabii alışkanlık iş ile eşanlamlı olarak

 $x = array(); 
 $x['items'] = array(); 
 $x['items']['item']='value 1'; 
 $x['items']['item']='value 2';

hangi ders çalışmaz.

En iyi bahisler ile vardır

 array("items"=>array( "value1","value2") );

and hoping the numeric keys will "work" or

 array("items"=>array("item"=>array("value1","value2")))

durumunda o kadar eğimlidir.

Additionally

Looking through the examples on sourceforge, it would appear this is valid syntax:

$params = '<person xsi:type="tns:Person"><firstname xsi:type="xsd:string">Willi</firstname><age xsi:type="xsd:int">22</age><gender xsi:type="xsd:string">male</gender></person>';
$result = $client->call('hello', $params);

Üzgünüz, aşağıdaki linki sen-kopyalayıp yapıştırmak kendinizi gerekecek. Ben POS markdown ve kayıp ile mücadele çalıştı:

http://nusoap.cvs.sourceforge.net/viewvc/ * Ödeme * / nusoap/samples/wsdlclient3b.php

This one shows using an un-keyed ( ie: numeric ) array as an input source: http://nusoap.cvs.sourceforge.net/viewvc/*checkout*/nusoap/samples/wsdlclient4.php

Bunun nedeni, yöntem, garip:

$params = array('items' => array('item' => array('value1', 'value2')))
$client->call( 'action', $params );

works form me. As explained in this link

Belki NuSOAP daha yeni sürümü gerekir?

Hayır şans. Bu sadece size açıklamak şekilde çalışmıyor. Ben isterdim.

array (=> array ("değer1", "değer2") "ürün");

<item> etiketleri oluşturmak ve olmaz

array ("ürün" => array ("item" => array ("değer1", "değer2")))

Bu döndürür:

<items>

<item>Array</item>

</items>