对于客户,我正在构建客户端应用程序和第三方应用程序之间的链接。第三方的应用程序需要以下字段:
<General>
<Signing>
<Signing>
<FieldA></FieldA>
<FieldB></FieldB>
<FieldC></FieldC>
</Signing>
<Signing>
<FieldA></FieldA>
<FieldB></FieldB>
<FieldC></FieldC>
</Signing>
</Signing>
</General>
我们正在通过多维关联数组为PHP中的链接构建输入。所以上面的XML会计算到以下PHP:
'General' => array(
'Signing' => array(
'Signing' => array(
'FieldA' => '',
'FieldB' => '',
'FieldC' => ''
),
'Signing' => array(
'FieldA' => '',
'FieldB' => '',
'FieldC' => ''
)
)
)
有一些问题。
Signing
只会被最后一个Signing
项覆盖。我的问题是,如何使用仍然输出Signing
的每个实例的重复Signing
键来创建动态关联数组(因此Signing
的数量可能会有所不同)只有一个Signing
字段只有最后一个实例。
我希望这是有道理的。我是外国人,我的大脑很乱,所以我很难解释事情。
提前致谢!
答案 0 :(得分:1)
你无法在PHP中表达相同的数据结构。您必须以不同的方式表达,并且您的XML序列化器必须在PHP数组结构和预期的XML表示之间进行适当的转换。一个明智的PHP数组结构就是这样:
'General' => array(
'Signing' => array(
array('FieldA' => '', 'FieldB' => '', 'FieldC' => ''),
array('FieldA' => '', 'FieldB' => '', 'FieldC' => ''),
)
)
XML序列化程序将执行类似于:
的操作foreach ($array['General']['Signing'] as $signing) {
$xml->General->Signing->appendChild('Signing')
..
}
如何准确地执行此操作取决于您的XML序列化过程。我只想说数据结构不需要/不能完全相同,并且需要翻译层。