返回php中的递归函数
我正在开发一个函数来解析 2 个 xml 文件。它逐个节点地比较它们,然后如果节点不同,则该函数应返回其中之一。但它没有返回任何东西。
$xml = simplexml_load_file("file1.xml");
$xml2 = simplexml_load_file("file2.xml");
$result = parseNode($xml, $xml2);
print_r($result);
echo $result;
function parseNode($node1, $node2) {
for ($i = 0; $i < count($node1->children()); $i++) {
$child1 = $node1->children();
$child2 = $node2->children();
if ($child1[$i]->getName() != $child2[$i]->getName()) {
return $child1[$i];
} else {
parseNode($child1[$i], $child2[$i]);
}
}
}
I'm developing a function to parse 2 xml files. It compares them node by node and then if the nodes are different, the function should return one of them. But it isn't returning anything.
$xml = simplexml_load_file("file1.xml");
$xml2 = simplexml_load_file("file2.xml");
$result = parseNode($xml, $xml2);
print_r($result);
echo $result;
function parseNode($node1, $node2) {
for ($i = 0; $i < count($node1->children()); $i++) {
$child1 = $node1->children();
$child2 = $node2->children();
if ($child1[$i]->getName() != $child2[$i]->getName()) {
return $child1[$i];
} else {
parseNode($child1[$i], $child2[$i]);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
好吧,你可以用一个简单的条件语句来做到这一点......
Well, you can do it with a simple conditional statement...
您还可以使用递归迭代器循环遍历 XML 结构,以简化您的
parseNodes()
函数。设置 MultipleIterator 相当冗长(主要是由于类名超长),但逻辑非常简单。
You could also loop over the XML structures using recursive iterators to simplify your
parseNodes()
function.Setting up the
MultipleIterator
is pretty verbose (mostly due to the über-long class names) but the logic is darned simple.递归调用中没有
return
。因此,没有结果。编辑不要对此进行投票。 ircmaxell是对的。我已经删除了答案中的例外部分。
There's no
return
in the recursive call. Hence, no result.EDIT Do not up-vote this. ircmaxell is right. I have removed the exception part of my answer.