对于专家:php中的bug?递归foreach无法正常工作。[英] For gurus: bug in php? Recursive foreach dont work properly.

问题描述

嗨!看起来php中有一个错误.如果我有使用
的功能foreach 递归运行槽数组,低级foreach
被情人级别的foreach''es打断.如果我简单地使用''for''一切
没关系.示例:

我有一个由 3 个对象组成的数组,由它们的
分层连接变量id和parentId,这里是层次结构:
id=1 parentId=0
....id=2 parentId=1
....id=3 parentId=1

我开始从 id=1 的项目挖掘到它的孩子和顶级
foreach 永远不会达到要素 3!顶级 foreach 刚刚停止.

<?php
函数 prn($s){
回声($s.''<br>'');
}

$nodes = 数组();
$nodes[0] = 新节点(1, 0);
$nodes[1] = 新节点(2, 1);
$nodes[2] = 新节点(3, 1);
$nodes[3] = 新节点(4, 0);

类节点{
变量 $id;
var $parentId;

函数节点($id, $parentId){
$this->id = $id;
$this->parentId = $parentId;
}

函数挖掘($level){
全局 $nodes;

$l = '''';
for($i=0; $i<$level; $i++) $l.=''..'';
prn($l.''寻找 ''.$this->id.'' {'');

foreach($nodes as $n){
prn($l.$n->id.'' (父 ''.$n->parentId.'')'');
if($n->parentId == $this->id){
$n->dig($level+1);
}
}

prn($l.''}'');
}

}

$nodes[0]->dig(0);

?>

输出应如下所示:

寻找 1 个 {
的孩子1(父 0)
2(父 1)
...寻找 2 岁的孩子 {
...1(父 0)
...2(父 1)
...3(父 1)
...}
3(父母1)
...寻找 3 岁的孩子 {
...1(父 0)
...2(父 1)
...3(父 1)
...}
}

但它看起来像这样:

寻找 1 个 {
的孩子1(父 0)
2(父 1)
...寻找 2 岁的孩子 {
...1(父 0)
...2(父 1)
...3(父 1)
...}
}

推荐答案

s){
echo(

s.''<br>'');
}


nodes = array();

本文地址:https://www.itbaoku.cn/post/1050466.html