求将一段递归代码改为非递归形式
<br />function delRecursive($id,$class_arr)<br />{<br /> if($id=="") $id=0;<br /> for($i=0;$i<count($class_arr);$i++){<br /> if($class_arr[$i][3]==$id){<br /> $subid=$class_arr[$i][0];<br /> $this->db->delete('tree', array('id' => $id));<br /> $this->db->delete('tree', array('id' => $subid)); <br /> delRecursive($subid,$class_arr);<br /> } <br /> }<br />}<br />
$ar = array(<br /> array( "1", "0", "顶级分类1", "0", "1"),<br /> array("713", "0", "顶级分类2", "0", "1"),<br /> array("716", "0", "一级子分类1", "713", "1"),<br /> array("718", "0", "顶级分类3", "0", "1"),<br /> array("721", "0", "二级子分类1", "716", "1"),<br />);<br /><br />$id = 713;<br />delRecursive($id, $ar);<br />func($id, $ar);<br /><br />function func($id, $class_arr)<br />{<br /> if($id=="") $id=0;<br /> $st = array($id);<br /> do {<br /> $cnt = count($st);<br /> for($i=0;$i<count($class_arr);$i++){<br /> if(in_array($id = $class_arr[$i][3], $st)){<br /> $subid=$class_arr[$i][0];<br /> if(! in_array($subid, $st)) {<br /> $st[] = $subid;<br />echo "$id,$subid\n"; <br />// $this->db->delete('tree', array('id' => $id));<br />// $this->db->delete('tree', array('id' => $subid)); <br />// delRecursive($subid,$class_arr);<br /> }<br /> } <br /> }<br /> }while($cnt < count($st));<br />}<br /><br />function delRecursive($id, $class_arr)<br />{<br /> if($id=="") $id=0;<br /> for($i=0;$i<count($class_arr);$i++){<br /> if($class_arr[$i][3]==$id){<br /> $subid=$class_arr[$i][0];<br />// $this->db->delete('tree', array('id' => $id));<br />// $this->db->delete('tree', array('id' => $subid)); <br />echo "$id,$subid\n"; <br /> delRecursive($subid,$class_arr);<br /> } <br /> }<br />}
<br>$st = array($id);<br>do {<br> $cnt = count($st);<br> for($i=0;$i<count></count> if(in_array($class_arr[$i][3], $st)){<br> $subid=$class_arr[$i][0];<br> if(!in_array($subid, $st)) {<br> $st[] = $subid;<br> $this->DB_MT->delete('tree', array('id' => $id));<br> $this->DB_MT->delete('tree', array('id' => $subid));<br> }<br> } <br> }<br>}while($cnt