我尝试将xml解析为数组。我有两种类型的传入数据: 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对象,然后使用第一个答案将其转换为Converting a SimpleXML Object to an Array中的数组。第一种情况的结果是
[ '0' => ['a' => 'A', 'b' => 'B'], '1' => ['c' => 'C', 'd' => 'D']].
第二种情况的结果是['e' => 'E', 'f' => 'F']
但我需要第二种情况[ '0' => ['e' => 'E', 'f' => 'F']]
如何解决?
答案 0 :(得分:1)
如果你有你的e,f数组(这是你的第二种情况的输出,但是我已经在这里生成了它。只需使用你的第二种情况下的XML数组)
$arr1 = array(
'e' => 'E',
'f' => 'F',
'g' => 'G',
'h' => 'H',
);
然后你可以做
$arr2 = array_chunk($arr1, 2);
将为您提供输出($ arr2):
[0 => ['e' => 'E', 'f' => 'F'], 1=> ['g' => 'G', 'h' => 'H']]
并且假设您希望子数组的长度始终为2个项目。您可以通过更改array_chunk()的第二个参数来更改它。
答案 1 :(得分:1)
对于您的示例,我认为您可以使用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"
}
}