Php 当有1个或多个子项时解析xml强制数组结构

Php 当有1个或多个子项时解析xml强制数组结构,php,xml,Php,Xml,我试图解析一些具有以下结构的XML(显示了两种形式,均有效): 我希望迭代子对象以查看数据-但是,只有在有多个子对象时,以下操作才有效: foreach($children as $child) { echo $child['element1']; } 如果只有一个孩子,那么这不起作用,因为下面是正确的: $children === {'element1' => 'Some Data', 'element2' => 'Some Data'} 在事先不知道是否有多个子项的情

我试图解析一些具有以下结构的XML(显示了两种形式,均有效):

我希望迭代子对象以查看数据-但是,只有在有多个子对象时,以下操作才有效:

foreach($children as $child) {
    echo $child['element1'];
}
如果只有一个孩子,那么这不起作用,因为下面是正确的:

$children === {'element1' => 'Some Data', 'element2' => 'Some Data'}

在事先不知道是否有多个子项的情况下,如何确保
$children
始终是一个数组(可能大小为1)?

我最后做了以下工作-如果有人有更好的解决方案,我会感兴趣:

$children = $arr['parent-group']['child'];
if (!empty($children['element1'])) {
    $children = array($children);
}

完成后,
$children
将始终是一个子数组,允许正确执行以下行。

不使用json_encode()。可以强制对象,但不能强制数组。在任何情况下,由于要转换xml,所有的“键”都将是字符串(标记名),这意味着需要对象,因为数组只能有数字索引。数组在PHP中可以有字符串索引-我上面显示的代码适用于多个子项,但在只有一个子项时不适用。是的,但不是用javascript。这就是您使用json所做的。如果一个键不是int,它将被制作成一个对象。一旦它成为一个对象,就不能让json_解码将其转换回数组。它不是javascript格式的,而是在PHP类中。这在我身上没有发生(在第一个XML中,所有内容似乎都已正确转换)。
$children === {'element1' => 'Some Data', 'element2' => 'Some Data'}
$children = $arr['parent-group']['child'];
if (!empty($children['element1'])) {
    $children = array($children);
}