在遍历PHP SimpleXML对象时获得重复结果
当我遍历以下树:,一些结果会加倍。也就是说,例如,它将“集合论”主题部分打印两次,包括所有内容。您可以在此处看到有问题的结果: 问题截图 PHP在遍历PHP SimpleXML对象时获得重复结果,php,xml,parsing,Php,Xml,Parsing,当我遍历以下树:,一些结果会加倍。也就是说,例如,它将“集合论”主题部分打印两次,包括所有内容。您可以在此处看到有问题的结果: 问题截图 PHP $value){ 如果($key==“title”){ 回显“$object->title.”; }else if($key==“主题”){ //遍历子元素(如果有) 回声“”; foreach($object->topicas$num=>$thatTopic){ 回声“”; traverseObject($thatTopic); 回声“”; } 回
$value){
如果($key==“title”){
回显“$object->title.”;
}else if($key==“主题”){
//遍历子元素(如果有)
回声“”;
foreach($object->topicas$num=>$thatTopic){
回声“- ”;
traverseObject($thatTopic);
回声“
”;
}
回声“
”;
}否则{//现在跳过其余部分
}
}
}
traverseObject($库);
?>
XML
用户ID095209376的库
集合论
公理
分离公理
分离公理
无限公理
无限公理
无限公理
历史
很久以前,在一个遥远的星系。。。
分析
赋范向量空间
赋范向量空间
向量空间
向量空间
定义
向量空间是一个。。。
所以我的算法是错误的。很难分析到底是什么不起作用,但下面是更正:
输出
PHP
$value){
如果($key==“title”){
回显“”$object->title.“ ”;
}else if($key==“主题”){
//遍历子元素(如果有)
traverseObject($value);
}else if($key==“id”){
回显“id:.$value.”;
}否则{//现在跳过其余部分
}
}
回声“”;
}
traverseObject($库);
?>
<?php
$library = simplexml_load_file('library.xml');
if($library == null){
echo "uh oh, null library";
}
function traverseObject($object)
{
foreach ($object as $key => $value ){
if($key == "title"){
echo "<b>" . $object->title . "</b>";
} else if ($key == "topic"){
// traverse child elements, if any
echo "<ul>";
foreach ( $object->topic as $num => $thatTopic ){
echo "<li>";
traverseObject($thatTopic);
echo "</li>";
}
echo "</ul>";
} else { // skip the rest for now
}
}
}
traverseObject($library);
?>
<?xml version="1.0" encoding="UTF-8"?>
<library userid="095209376">
<title>UserID095209376's Library</title>
<topic>
<title>Set Theory</title>
<topic>
<title>Axioms</title>
<topic>
<title>Axiom of Separation</title>
<id>axiom-of-separation</id>
</topic>
<topic>
<title>Axiom of Infinity</title>
<id>axiom-of-infinity</id>
<entry>
<title>Axiom of Infinity</title>
<section>
<title>History</title>
<body>
Long ago, in a galaxy far far away...
</body>
</section>
</entry>
</topic>
</topic>
</topic>
<topic>
<title>Analysis</title>
<topic>
<title>Normed Vector Spaces</title>
<id>normed-vector-spaces</id>
<topic>
<title>Vector space</title>
<id>vector-space</id>
<entry>
<section>
<title>Definition</title>
<body>A vector space is a...</body>
</section>
</entry>
</topic>
</topic>
</topic>
</library>
<?php
error_reporting(E_ALL);
$library = simplexml_load_file('library.xml');
if($library == null){
echo "uh oh, null library";
}
function traverseObject($object)
{
echo "<ul>";
foreach ($object as $key => $value ){
if($key == "title"){
echo "<li><b>" . $object->title . "</b></li>";
} else if ($key == "topic"){
// traverse child elements, if any
traverseObject($value);
} else if($key == "id"){
echo "<i>id: " . $value . "</i>";
} else { // skip the rest for now
}
}
echo "</ul>";
}
traverseObject($library);
?>