PHP:在SimpleXML中,多个子元素被视为数组;一个子元素只是一个元素

时间:2017-05-05 20:30:45

标签: php arrays xml simplexml

我有以下XML:

<fruits>
    <fruit>
        <name>apple</name>
        <price>.99</price>
        <per>pound</per>
    </fruit>
    <fruit>
        <name>pear</name>
        <price>1.99</price>
        <per>pound</per>
    </fruit>
    <fruit>
        <name>grapefruit</name>
        <price>.99</price>
        <per>each</per>
    </fruit>
</fruits>

有几个结果,如示例中所示,print_r如下所示:

SimpleXMLElement Object
(
    [fruit] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [name] => apple
                    [price] => .99
                    [per] => pound
                )

            [1] => SimpleXMLElement Object
                (
                    [name] => pear
                    [price] => 1.99
                    [per] => pound
                )

            [2] => SimpleXMLElement Object
                (
                    [name] => grapefruit
                    [price] => .99
                    [per] => each
                )

        )

)

然而,如果我摆脱梨和葡萄柚,只留下苹果,我得到

SimpleXMLElement Object
(
    [fruit] => SimpleXMLElement Object
        (
            [name] => apple
            [price] => .99
            [per] => pound
        )

)

注意结构上的差异。在第一种情况下,&lt; fruit&gt;是一个SimpleXML对象的数组;在第二个,阵列消失了&lt; fruit&gt;只是一个对象。下游会产生问题,因为代码期望一组对象。

我试过把#34; apple&#34;将对象转换为数组并将其分配给&lt; fruit&gt;,但输出与第二个示例相同:如果只有一个子元素,则报告为元素,而不是数组。

我想我可以循环创建一个传统的数组并使用它,但是本地使用SimpleXML对象会很好。无论有多少个子节点,我都希望处理能够保持一致。

0 个答案:

没有答案