Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用nusoap和PHP发送数据数组_Php_Arrays_Nusoap - Fatal编程技术网

用nusoap和PHP发送数据数组

用nusoap和PHP发送数据数组,php,arrays,nusoap,Php,Arrays,Nusoap,希望有人能帮我。我正在使用以下部分WSDL构建nusoap客户端: <s:element name="SavePrestaPicklist"> <s:complexType> <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="USERNAME" type="s:string" /> <

希望有人能帮我。我正在使用以下部分WSDL构建nusoap客户端:

      <s:element name="SavePrestaPicklist">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="USERNAME" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="PASSWORD" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="BRANCH" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="CUSTOMERNUMBER" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="CUSTOMERPO" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="SHIPMETHOD" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="PRESTAPO" type="s:string" />
            <s:element minOccurs="0" maxOccurs="1" name="PICKITEMS" type="tns:ArrayOfPICKITEM" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:complexType name="ArrayOfPICKITEM">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="unbounded" name="PICKITEM" nillable="true" type="tns:PICKITEM" />
        </s:sequence>
      </s:complexType>
      <s:complexType name="PICKITEM">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="PARTNUMBER" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="BRANCH" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="MFRCODE" type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="QUANTITY" type="s:string" />
        </s:sequence>
      </s:complexType>
这不起作用,会发送一个PICKITEMS,如下所示:

   $orderdata = getorder('123');
   $orderdata = array(
        'USERNAME' => $config['export_username'],
        'PASSWORD' => $config['export_password'],
        'BRANCH' => '01',
        'CUSTOMERNUMBER' => $data['order']['address1'],
        'CUSTOMERPO' => $data['order']['gift_message'],
        'SHIPMETHOD' => $shipMethod,
        'PRESTAPO' => $data['order']['id_order']);

        // Build the pickitems array of pickitem.

        $pickitems = array();
        foreach($data['products'] as $item) {

            $pickitem = array(
                'PARTNUMBER' => $item['name'],
                'BRANCH' => '01',
                'MFRCODE' => '642',
                'QUANTITY' => $item['product_quantity']);

            $pickitems[] = $pickitem;
        }
        $data['PICKITEMS'] = $pickitems;

    $usingWsdl = true;
    $client = new nusoap_client($config['export_wsdl'], $usingWsdl);

    $response = $client->call('SavePrestaPicklist', $orderdata);
<PICKITEMS>
    <0>
       <PARTNUMBER>BLAH</PARTNUMBER>
       <BRANCH>BLAH</BRANCH>
         ETC.
    </0>
    <1>
        ANOTHER ITEM SET
    </1>
 </PICKITEMS>  

废话
废话
等
另一个项目集
我想要的是:

<PICKITEMS>
    <PICKITEM>
       <PARTNUMBER>BLAH</PARTNUMBER>
       <BRANCH>BLAH</BRANCH>
         ETC.
    </PICKITEM>
    <PICKITEM>
        ANOTHER ITEM SET
    </PICKITEM>
 </PICKITEMS>

废话
废话
等
另一个项目集

因为在PHP中不能有重复的“PICKITEM”键,所以我不知道如何做到这一点。任何帮助都将不胜感激。

您可以使用$client->send()方法发送原始XML

$raw_xml=“…”;
$msg=$client->serializeEnvelope($raw_xml”);
$result=$client->send($msg,$endpoint);
您可以在这里看到示例:


如果这不起作用,您可以尝试使用CURL发布XML。

您的服务器函数SavePrestaPicklist的结构是什么?参数和类型的顺序。您可以在客户端序列化变量$orderdata,然后在调用SavePrestaPicklist之前在服务器端取消序列化。感谢您发布此消息。事实上,我刚才已经想出了解决办法,却忘了回答我自己的问题。
'PICKITEMS' => 
    array (
        'PICKITEM' => 
            array(
                0 => array('PARTNUMBER' => 'param1', 'BRANCH' => 'value1'),
                1 => array('PARTNUMBER' => 'param2', 'BRANCH' => 'value2')
        )
    )
'PICKITEMS' => 
    array (
        'PICKITEM' => 
            array(
                0 => array('PARTNUMBER' => 'param1', 'BRANCH' => 'value1'),
                1 => array('PARTNUMBER' => 'param2', 'BRANCH' => 'value2')
        )
    )