Повторяющиеся теги в nusoap

Я использую нусоап для подключения к веб-сервису мыла. 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>

Как этого добиться?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
2 301
4

Ответы 4

Проблема с внутренним массивом ()

$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"))) 

в том случае, если он так склонен.

Кроме того

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);

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/

Пожалуйста, не размещайте просто ссылку на свой веб-сайт, разместите здесь актуальное решение. Или, если решение очень длинное, по крайней мере, опубликуйте резюме в своем ответе.

Hans Olsson 07.02.2012 17:07

Другие вопросы по теме