'追加'关联数组与重复键到多维关联数组

时间:2015-10-13 13:58:49

标签: php duplicates associative-array

对于客户,我正在构建客户端应用程序和第三方应用程序之间的链接。第三方的应用程序需要以下字段:

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

有一些问题。

  1. 关联数组中没有重复键这样的东西。输出会搞砸。
  2. 第三方需要这样,这就是他们设置应用程序的方式。
  3. 即使在关联数组中存在重复的kets这样的东西,也无法输出到第三方期望的内容。 Signing只会被最后一个Signing项覆盖。
  4. 我的问题是,如何使用仍然输出Signing的每个实例的重复Signing键来创建动态关联数组(因此Signing的数量可能会有所不同)只有一个Signing字段只有最后一个实例。

    我希望这是有道理的。我是外国人,我的大脑很乱,所以我很难解释事情。

    提前致谢!

1 个答案:

答案 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序列化过程。我只想说数据结构不需要/不能完全相同,并且需要翻译层。