Я использую нусоап для подключения к веб-сервису мыла. XML, который класс отправляет службе, состоит из массива, то есть:
$params = array("param1" => "value1", "param2" => "value1");
$client->call('HelloWorld', $params, 'namespace', 'SOAPAction');
Это прекрасно работает. Многомерный массив также создает красивое вложенное сообщение xml.
У меня возникает проблема, когда мне нужны два тега с одинаковым именем:
<items>
<item>value 1</item>
<item>value 2</item>
</item>
$params = array("items" => array("item" => "value 1", "item" => "value 2"));
Второй элемент в массиве перезаписывает первый, что приводит к:
<items>
<item>value 2</item>
</item>
Как этого добиться?






Проблема с внутренним массивом ()
$test_array = array("item" => "value 1", "item" => "value 2");
создает массив с одним ключом («элемент»).
Попробуйте это и посмотрите, работает ли это:
$params = array("items" => array("item" => array("value 1", "value 2")));
Однако никаких гарантий ... Я не использовал nusoap в течение времени длинная и не установил здесь PHP для его тестирования.
Ваша основная проблема в том, что вы пишете неверный PHP-код.
$x = array("items" => array("item" => "value 1", "item" => "value 2"));
var_dump($x);
array(1) {
["items"]=>
array(1) {
["item"]=>
string(7) "value 2"
}
}
Что, конечно, не сработает, поскольку это синоним
$x = array();
$x['items'] = array();
$x['items']['item']='value 1';
$x['items']['item']='value 2';
что, конечно, не сработает.
Ваши лучшие ставки с
array("items"=>array( "value1","value2") );
и надеясь, что цифровые клавиши будут "работать" или же
array("items"=>array("item"=>array("value1","value2")))
в том случае, если он так склонен.
$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);
http://nusoap.cvs.sourceforge.net/viewvc/проверить/nusoap/samples/wsdlclient3b.php
Это показывает использование неключевого (т.е. числового) массива в качестве источника ввода: http://nusoap.cvs.sourceforge.net/viewvc/проверить/nusoap/samples/wsdlclient4.php
Это странно, потому что метод:
$params = array('items' => array('item' => array('value1', 'value2')))
$client->call( 'action', $params );
работает у меня. Как объяснено в этой ссылке
Может вам нужна более новая версия nusoap?
мы решили эту проблему, передав в функцию вызова nusoap строку вместо массива. пожалуйста, проверьте ссылку ниже http://fundaa.com/php/solved-duplicate-tags-in-nusoap/
Пожалуйста, не размещайте просто ссылку на свой веб-сайт, разместите здесь актуальное решение. Или, если решение очень длинное, по крайней мере, опубликуйте резюме в своем ответе.