【发布时间】:2021-04-23 17:53:10
【问题描述】:
需要实现一个可以接受第二个子节点的递归函数,我试图循环第二个 foreach 但我无法实现。也许我错过了什么,想知道是否有人通过这个:
代码是:
function runXml() {
$content1 = <<< XML
<data>
<users>
<user>
<name>myName</name>
<email>myEmail</email>
<address>MyAddres - City - Country</address>
</user>
<user>
<name>myName2</name>
<email>myEmail2</email>
<address>MyAddres2 - City - Country</address>
</user>
</users>
</data>
XML;
$content2 = <<< XML
<users>
<user>
<name>myName</name>
<email>myEmail</email>
<address>MyAddres - City - Country</address>
</user>
<user>
<name>myName2</name>
<email>myEmail2</email>
<address>MyAddres2 - City - Country</address>
</user>
</users>
XML;
echo '<pre>';
$xml1 = simplexml_load_string($content1);
print_r($this->processFeedXmlWithoutAttributes($xml1));
$xml2 = simplexml_load_string($content2);
print_r($this->processFeedXmlWithoutAttributes($xml2));
}
function processFeedXmlWithoutAttributes($xml)
{
$output = array();
try {
if($xml->children()) {
$children = $xml->children();
if(count($children) > 0) {
foreach($children as $child) {
$output[] = $child;
}
}
}
} catch (Exception $e) {
}
return $output;
}
结果是:
Array
(
[0] => SimpleXMLElement Object
(
[user] => Array
(
[0] => SimpleXMLElement Object
(
[name] => myName
[email] => myEmail
[address] => MyAddres - City - Country
)
[1] => SimpleXMLElement Object
(
[name] => myName2
[email] => myEmail2
[address] => MyAddres2 - City - Country
)
)
)
)
Array
(
[0] => SimpleXMLElement Object
(
[name] => myName
[email] => myEmail
[address] => MyAddres - City - Country
)
[1] => SimpleXMLElement Object
(
[name] => myName2
[email] => myEmail2
[address] => MyAddres2 - City - Country
)
)
所需的结果是 xml 的两种结构:
Array
(
[0] => SimpleXMLElement Object
(
[name] => myName
[email] => myEmail
[address] => MyAddres - City - Country
)
[1] => SimpleXMLElement Object
(
[name] => myName2
[email] => myEmail2
[address] => MyAddres2 - City - Country
)
)
对于我有“”用户索引的第一个结构被添加并创建了一个多维数组,我们的想法是摆脱该索引并让数组稍后迭代。
感谢任何帮助!
【问题讨论】: