php - 为什么 SimpleXML 在我使用它时将我的数组更改为数组的第一个元素?

标签 php arrays object simplexml

这是我的代码:

$string = <<<XML
<?xml version='1.0'?> 
<test>
 <testing>
  <lol>hello</lol>
  <lol>there</lol>
 </testing>
</test>
XML;
$xml = simplexml_load_string($string);
echo "All of the XML:\n";
print_r $xml;
echo "\n\nJust the 'lol' array:";
print_r $xml->testing->lol;

输出:

All of the XML:

SimpleXMLElement Object
(
    [testing] => SimpleXMLElement Object
        (
            [lol] => Array
                (
                    [0] => hello
                    [1] => there
                )

        )

)




Just the 'lol' array:

SimpleXMLElement Object
(
    [0] => hello
)

为什么它只输出 [0] 而不是整个数组?我不明白。

最佳答案

@Yottatron 的建议是正确的,但并非如本示例所示的所有情况:

如果您的 XML 是这样的:

<?xml version='1.0'?>
<testing>
    <lol>
        <lolelem>Lol1</lolelem>
        <lolelem>Lol2</lolelem>
        <notlol>NotLol1</lolelem>
        <notlol>NotLol1</lolelem>
    </lol>
</testing>

Simplexml 的输出将是:

SimpleXMLElement Object
(
[lol] => SimpleXMLElement Object
    (
        [lolelem] => Array
            (
                [0] => Lol1
                [1] => Lol2
            )

        [notlol] => Array
            (
                [0] => NotLol1
                [1] => NotLol1
            )

    )

)

并通过写作

$xml->lol->lolelem

你希望你的结果是

Array
(
     [0] => Lol1
     [1] => Lol2
)

但取而代之的是:

SimpleXMLElement Object 
(
    [0] => Lol1
)

和通过

$xml->lol->children()

你会得到:

SimpleXMLElement Object
(
[lolelem] => Array
    (
        [0] => Lol1
        [1] => Lol2
    )

[notlol] => Array
    (
        [0] => NotLol1
        [1] => NotLol1
    )

)

如果你只想要 lolelem 的,你需要做什么:

$xml->xpath("//lol/lolelem")

这给出了这个结果(不是预期的形状但包含正确的元素)

Array
(
    [0] => SimpleXMLElement Object
    (
        [0] => Lol1
    )

    [1] => SimpleXMLElement Object
    (
        [0] => Lol2
    )

)

关于php - 为什么 SimpleXML 在我使用它时将我的数组更改为数组的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796797/

相关文章:

php - 安全推进连接,远程 MySQL

javascript - 如何在 JavaScript 中表示代数数据类型和模式匹配

javascript - 如何使用 phantomjs 和 php-webdriver 跟踪页面重定向并持续设置常量浏览器用户代理

c# - 将字节数组(未知大小)拆分为剩余的 block

javascript - Javascript 程序无法正常运行

javascript - 如何使用javascript在嵌套对象数组中按属性赋值

java - Java 中对象比较的问题(上下文是 RB 树)

javascript - 创建对象的递归列表

php - 如何显示所选分类的分类父级

php - 给定一个值表,在 "deal"中找到最好的 "group buy"