Php 递归地取消设置foreach中的变量
我需要通过递归建立树层次结构。 没有php unset,一切都很好,但是我想要已经构建的unset元素 问题:在下面的代码中,取消工作,但中断第一个递归调用,因此从id=5的示例数据类别中,不呈现 有什么想法吗,很有趣怎么了Php 递归地取消设置foreach中的变量,php,recursion,unset,Php,Recursion,Unset,我需要通过递归建立树层次结构。 没有php unset,一切都很好,但是我想要已经构建的unset元素 问题:在下面的代码中,取消工作,但中断第一个递归调用,因此从id=5的示例数据类别中,不呈现 有什么想法吗,很有趣怎么了 function renderMenu(&$tempTree, $parentId){ foreach($tempTree as $row) { if ($row['parent_id'] == $parentId) {
function renderMenu(&$tempTree, $parentId){
foreach($tempTree as $row) {
if ($row['parent_id'] == $parentId) {
$id = $row["category_id"];
echo $row['name'].'<br>';
unset($tempTree[$id]);
if (isset($row['has_child'])){
renderMenu($tempTree, $id);
}
}
}
}
$s=array ( '1' => Array ( 'category_id' => 1,
'parent_id' => 0,
'name' => '1' ),
'2' => Array ( 'category_id' => 2,
'parent_id' => 0,
'has_child' => true,
'name' => '2'),
'3' => Array ( 'category_id' => 3,
'parent_id' => 2,
'name' => '3'),
'4' => Array ( 'category_id' => 4,
'parent_id' => 2,
'name' => '4'),
'5' => Array ( 'category_id' => 5,
'parent_id' => 0,
'name' => '5' )
);
renderMenu($s,0);
函数renderMenu(&$tentree,$parentId){
foreach($TENTREE作为$row){
if($row['parent_id']==$parentId){
$id=$row[“category_id”];
echo$row['name']。
;
未设置($TENTREE[$id]);
如果(isset($row['has_child'])){
renderMenu($tentree,$id);
}
}
}
}
$s=数组('1'=>数组('category\u id'=>1,
“父项id”=>0,
“名称”=>“1”),
“2”=>数组(“类别id”=>2,
“父项id”=>0,
“has_child”=>true,
“名称”=>“2”),
'3'=>数组('category\u id'=>3,
“父项id”=>2,
“名称”=>“3”),
'4'=>数组('category_id'=>4,
“父项id”=>2,
“名称”=>“4”),
“5”=>数组(“类别id”=>5,
“父项id”=>0,
“名称”=>“5”)
);
renderMenu($s,0);
错误在这里:
unset($tempTree[$id]);
应该是:
unset($row[$id]);
(在foreach循环中将$TENTREE元素作为$row引用时)