当wsdl中的元素类型为int时,是否有方法使用PHP SOAP客户端传递null?
我正在使用PHP SOAP客户端提交一个包含wsdl中定义的ID元素的对象,如下所示:当wsdl中的元素类型为int时,是否有方法使用PHP SOAP客户端传递null?,php,soap,Php,Soap,我正在使用PHP SOAP客户端提交一个包含wsdl中定义的ID元素的对象,如下所示: <s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/> <ns1:ID>0</ns1:ID> 'ID' => array (size=2) '_' => '' 'xsi:nil' => string 'true' 这将从SOAP客户端生成xml,如下所示: <s:
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
<ns1:ID>0</ns1:ID>
'ID' =>
array (size=2)
'_' => ''
'xsi:nil' => string 'true'
这将从SOAP客户端生成xml,如下所示:
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
<ns1:ID>0</ns1:ID>
'ID' =>
array (size=2)
'_' => ''
'xsi:nil' => string 'true'
问题:
是否有任何方法可以使用PHP SOAP客户端为int元素提交空值
更新
根据“Nate from Kalamazoo”的建议,我将$myarray[“ID”]=null;致:
$myarray["ID"] = array('_' => '','xsi:nil' => "true");
这导致数组元素“ID”是另一个数组,如下所示:
<s:element minOccurs="1" maxOccurs="1" name="ID" type="s:int"/>
<ns1:ID>0</ns1:ID>
'ID' =>
array (size=2)
'_' => ''
'xsi:nil' => string 'true'
现在xml看起来像:
<ns1:ID>1</ns1:ID> //where did the 1 come from?
传递给SOAP客户端的数组与用作XML元素名的元素名相关联,因此我猜传递数组的ID元素中的数组以某种方式返回1。但不管怎样,“xsi:ni;”不会出现在XML中的任何位置。能否将
xsi:nil=“true”
属性添加到ID元素中?差不多
$myarray["ID"] = array(
'_' => '',
'xsi:nil' => "true");
来源:谢谢,但是我得到了一个奇怪的结果,在XML中ID的值现在是1。我更详细地更新了这个问题。我是否理解PHP SOAP客户机如何解释数组?对于可能有类似情况的其他人,我明白了为什么我一直在xml中得到0。我有一个字符串替换,它看到空值并将其替换为“”。这是一行代码。我删除了它并成功地获得了所需的空值$ota=str_replace(“,”,$myarray)。