'appending' 具有重复键的关联数组到多维关联数组
'appending' associative array with duplicate keys to multidimensional associative array
对于客户,我正在客户的应用程序和第三方的应用程序之间构建 link。第三方应用程序需要如下字段:
<General>
<Signing>
<Signing>
<FieldA></FieldA>
<FieldB></FieldB>
<FieldC></FieldC>
</Signing>
<Signing>
<FieldA></FieldA>
<FieldB></FieldB>
<FieldC></FieldC>
</Signing>
</Signing>
</General>
我们正在通过多维关联数组为 PHP 中的 link 构建输入。所以上面的 XML 会计算出下面的 PHP:
'General' => array(
'Signing' => array(
'Signing' => array(
'FieldA' => '',
'FieldB' => '',
'FieldC' => ''
),
'Signing' => array(
'FieldA' => '',
'FieldB' => '',
'FieldC' => ''
)
)
)
有一些问题。
- 关联数组中没有重复键这样的东西。输出会被搞乱。
- 第三方需要它,这正是他们设置应用程序的方式。
- 即使关联数组中存在重复的kets,也没有办法输出到第三方期望的结果。
Signing
将被最后一个 Signing
项覆盖。
我的问题是,如何使用重复的 Signing
键创建一个动态关联数组(因此 Signing
的数量可以变化),该数组仍然输出 Signing
的每个实例,而不是仅包含最后一个实例的 Signing
字段。
我希望这是有道理的。我是外国人,我的大脑很混乱,所以我很不擅长解释事情。
提前致谢!
您不能在 PHP 中按字面意思表达相同的数据结构。您必须 以不同的方式 表达它,并且您的 XML-serialiser 必须在 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 序列化过程。可以说数据结构不需要 be/can 完全相同并且需要转换层就够了。
对于客户,我正在客户的应用程序和第三方的应用程序之间构建 link。第三方应用程序需要如下字段:
<General>
<Signing>
<Signing>
<FieldA></FieldA>
<FieldB></FieldB>
<FieldC></FieldC>
</Signing>
<Signing>
<FieldA></FieldA>
<FieldB></FieldB>
<FieldC></FieldC>
</Signing>
</Signing>
</General>
我们正在通过多维关联数组为 PHP 中的 link 构建输入。所以上面的 XML 会计算出下面的 PHP:
'General' => array(
'Signing' => array(
'Signing' => array(
'FieldA' => '',
'FieldB' => '',
'FieldC' => ''
),
'Signing' => array(
'FieldA' => '',
'FieldB' => '',
'FieldC' => ''
)
)
)
有一些问题。
- 关联数组中没有重复键这样的东西。输出会被搞乱。
- 第三方需要它,这正是他们设置应用程序的方式。
- 即使关联数组中存在重复的kets,也没有办法输出到第三方期望的结果。
Signing
将被最后一个Signing
项覆盖。
我的问题是,如何使用重复的 Signing
键创建一个动态关联数组(因此 Signing
的数量可以变化),该数组仍然输出 Signing
的每个实例,而不是仅包含最后一个实例的 Signing
字段。
我希望这是有道理的。我是外国人,我的大脑很混乱,所以我很不擅长解释事情。
提前致谢!
您不能在 PHP 中按字面意思表达相同的数据结构。您必须 以不同的方式 表达它,并且您的 XML-serialiser 必须在 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 序列化过程。可以说数据结构不需要 be/can 完全相同并且需要转换层就够了。