gpt4 book ai didi

PHP:simplexml_load_string() 强制数组

转载 作者:行者123 更新时间:2023-12-04 20:11:11 24 4
gpt4 key购买 nike

有谁知道我是否可以强制 SimpleXMLElement 变量始终为数组?

<result>
<item>
<id>1</id>
<name>name 1</name>
</item>
<item>
<id>2</id>
<name>name 2</name>
</item>
</result>

当通过 simplexml_load_string() 解析上述 XML 时,我得到以下对象
SimpleXMLElement Object
(
[item] => Array
(
[0] => SimpleXMLElement Object
(
[id] => 1
[name] => name 1
)
[1] => SimpleXMLElement Object
(
[id] => 2
[name] => name 2
)
)
)

这很棒,因为我可以遍历“项目”并获取单个对象。但是当 item 是单个条目时,如下所示,我得到一个不同的对象结构,它破坏了我的循环,因为我开始循环遍历“id”和“name”而不是对象。
<result>
<item>
<id>1</id>
<name>name 1</name>
</item>
</result>

SimpleXMLElement Object
(
[item] => SimpleXMLElement Object
(
[id] => 1
[name] => name 1
)

)

无论如何,是否可以通过 simplexml_load_string() 或通过重新构造 XML 来强制“item”成为一个数组?

最佳答案

你不需要把它作为一个数组,一个简单的检查就可以了。喜欢

if(is_array($xml->result->item))
{
//loop here
}
else
{
//only one object
}

此外,无论有一个元素还是多个元素,单个 foreach 都可以完成工作。例如
<?php
$string="
<result>
<item>
<id>1</id>
<name>name 1</name>
</item>

</result>";

$xml = simplexml_load_string($string);

//print_r($xml);


foreach($xml->item as $item)
{
echo $item->id."\n";
}
?>

这也适用于多个项目。见 fiddle

Fiddle

关于PHP:simplexml_load_string() 强制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19183449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com