从 XML 转换后调整数组格式



我尝试将xml解析为数组。我有 2 种类型的传入数据:1(

<rows>
<item>
<a>A</a>
<b>B</b>
</item>
<item>
<c>C</c>
<d>D</d>
</item>
</rows>

2(

<rows>
<item>
<e>E</e>
<f>F</f>
</item>
</rows>

我创建了一个 SimpleXMLElement 的对象,然后将其转换为数组,就像使用第一个答案将 SimpleXML 对象转换为数组一样。第一种情况下的结果是

[ '0' => ['a' => 'A', 'b' => 'B'], '1' => ['c' => 'C', 'd' => 'D']].

第二种情况下的结果是['e' => 'E', 'f' => 'F']

但是我需要第二种情况下的数字键[ '0' => ['e' => 'E', 'f' => 'F']]

如何解决?

对于您给出的示例,我认为您可以使用 array_values 其中(来自文档(:

返回数组中的所有值并为数组编制索引 数值。

$xml = simplexml_load_string($source);
$result = array_values(json_decode(json_encode($xml), true));
var_dump($result);

会给你:

array(1) {
  [0]=>
  array(2) {
    ["e"]=>
    string(1) "E"
    ["f"]=>
    string(1) "F"
  }
}

演示

如果你有你的 e,f 数组(这是你的第二种情况的输出,但我在这里生成了它。只需使用第二种情况下的 XML 数组(

$arr1 = array(
    'e' => 'E',
    'f' => 'F',
    'g' => 'G',
    'h' => 'H',
);

然后你可以做

$arr2 = array_chunk($arr1, 2);

这将给你输出 ($arr 2(:

[0 => ['e' => 'E', 'f' => 'F'], 1=> ['g' => 'G', 'h' => 'H']]

假设您希望子数组的长度始终为 2 个项目,这将起作用。您可以通过更改第二个参数 array_chunk(( 来更改它。

最新更新