当有 1 个或多个子级时分析 XML 强制数组结构


parsing xml force array structure when there are 1 or more children

我正在尝试解析一些具有以下结构的XML(显示了2个表单,都是有效的):

<xml-structure>
    <parent-group>
        <child>
            <element1>Some Data</element1>
            <element2>Some Data</element2>
        </child>
    </parent-group>
</xml-structure>
<xml-structure>
    <parent-group>
        <child>
            <element1>Some Data</element1>
            <element2>Some Data</element2>
        </child>
        <child>
            <element1>Some Data</element1>
            <element2>Some Data</element2>
        </child>
    </parent-group>
</xml-structure>

以下内容用于将整个结构放入关联数组中并查看数据:

$arr = json_decode(json_encode((array) simplexml_load_string($xml)),1);
$children = $arr['parent-group']['child'];

我想遍历子项以查看数据 - 但是,仅当有多个子项时,以下内容才有效:

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将始终是一个子数组,允许以下行正确执行。