'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' => ''
        )
    )
)

有一些问题。

  1. 关联数组中没有重复键这样的东西。输出会被搞乱。
  2. 第三方需要它,这正是他们设置应用程序的方式。
  3. 即使关联数组中存在重复的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 完全相同并且需要转换层就够了。