XML to array,xml2ary bug

时间:2012-10-29 09:37:06

标签: php xml

我正在使用此功能http://mysrc.blogspot.it/2007/02/php-xml-to-array-and-backwards.html 将XML解析为数组。非常棒的功能。但奇怪的是 如果我有以下2个xml文件:

<response>
<company prop1=1>
</company>
<company prop1=2>
</company>
</response>

<response>
<company prop1=1>
</company>
</response>

我得到了不同的结果。对于第一种情况,我得到了两个元素的数组:

Array(
  int(0) => _a => Array(...)
  int(1) => _a => Array(...)
)

但是对于第二个案例我得到了

  Array (
    _a => Array(...)
  )

这不是一个索引作为第一种情况的数组。这使解析变得复杂。 有没有人知道如何修改代码? 问候。

2 个答案:

答案 0 :(得分:1)

假设你做了类似

的事情
$result = xml2ary($xml);

尝试在调用xml2ary()之后添加此行:

$result = is_int(reset(array_keys($result))) ? $result : array($result);

检查结果数组的第一个键是否为整数(这意味着xml2ary函数返回多个结果。如果不是,它会自动将$result变量包装在数组()中,这样,即使只解析了一个XML项,也会有相同的响应格式。

答案 1 :(得分:0)

尝试使用PHP simplexml类:

http://php.net/manual/en/book.simplexml.php

这是使用PHP解析XML的最佳方法