gpt4 book ai didi

php - 使用 PHP 使用重复键进行 SOAP 调用

转载 作者:搜寻专家 更新时间:2023-10-31 21:48:54 27 4
gpt4 key购买 nike

我正在尝试在 PHP 5 中使用重复对象进行 SOAP 调用,如下所示:

<sources>
<source>
<name>somename</name>
<id>someid</id>
</source>
<source>
<name>somename</name>
<id>someid</id>
</source>
</sources>

以下代码适用于 1 个来源:

$data = [
'sources' => [
'source' => [
'name' => 'somename',
'id' => 'someid'
]
]
]

我如何使用 __soapCall 函数对这些数据进行 SOAP 调用,因为它需要一个数组,而数组在 PHP 中不能有重复的键。

到目前为止我尝试了什么:

$data = [
'sources' => [
'source' => [
[
'name' => 'somename',
'id' => 'someid'
],
[
'name' => 'somename',
'id' => 'someid'
]
]
]
]

这会导致“SOAP 错误:编码:对象没有‘名称’属性”。

$data = [
'sources' => [
'source' => [
(object) [
'name' => 'somename',
'id' => 'someid'
],
(object) [
'name' => 'somename',
'id' => 'someid'
]
]
]
]

这也会导致“SOAP-ERROR:编码:对象没有‘名称’属性”。

$data = [
'sources' => [
[
'name' => 'somename',
'id' => 'someid'
],
[
'name' => 'somename',
'id' => 'someid'
]
]
]

这也会导致“SOAP 错误:编码:对象没有‘源’属性”。我试过这个是因为我发现它是一个类似问题的答案:Multiple elements of same name in PHP SOAP Call .

最佳答案

我有found the solution myself .我已将 XML 消息编写为 xml 字符串,现在我以编程方式将其转换为数组:

$sourcesAsXml = "<root><source><name>a</name></source><source><name>b</name></source></root>"
$dataArray = ['sources' => json_decode(json_encode(simplexml_load_string($sourcesAsXml)))]

输出如下:

array ('sources' =>
stdClass::__set_state(array(
'source' =>
array (
0 =>
stdClass::__set_state(array(
'name' => 'a',
)),
1 =>
stdClass::__set_state(array(
'name' => 'b',
)),
),
))
)

关于php - 使用 PHP 使用重复键进行 SOAP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48403809/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com