Convert a piece of recursive code to function & nbsp; delRecursive ($ id, $ class_arr) {if ($) & nbsp; $ id0; for ($ i0; $ I & lt; count ($ class_arr); $ I ++) {if ($ class_arr [$ I] [3] $ id) {& nbsp; & nbsp; $ convert a piece of recursive code into a non-recursive form
function delRecursive($id,$class_arr)
{
if($id=="") $id=0;
for($i=0;$i
if($class_arr[$i][3]==$id){
$subid=$class_arr[$i][0];
$this->db->delete('tree', array('id' => $id));
$this->db->delete('tree', array('id' => $subid));
delRecursive($subid,$class_arr);
}
}
}
------ Solution --------------------
How can we not know the principle of convenience and convenience?
Eliminating Recursion means to replace the system stack with your own stack.
$ Ar = array (
Array ("1", "0", "top-level classification 1", "0", "1 "),
Array ("713", "0", "top-level classification 2", "0", "1 "),
Array ("716", "0", "Level 1 subcategory 1", "713", "1 "),
Array ("718", "0", "top-level classification 3", "0", "1 "),
Array ("721", "0", "level 2 subcategory 1", "716", "1 "),
);
$ Id = 713;
DelRecursive ($ id, $ ar );
Func ($ id, $ ar );
Function func ($ id, $ class_arr)
{
If ($ id = "") $ id = 0;
$ St = array ($ id );
Do {
$ Cnt = count ($ st );
For ($ I = 0; $ I
If (in_array ($ id = $ class_arr [$ I] [3], $ st )){
$ Subid = $ class_arr [$ I] [0];
If (! In_array ($ subid, $ st )){
$ St [] = $ subid;
Echo "$ id, $ subid \ n ";
// $ This-> db-> delete ('tree', array ('id' => $ id ));
// $ This-> db-> delete ('tree', array ('id' => $ subid ));
// DelRecursive ($ subid, $ class_arr );
}
}
}
} While ($ cnt <count ($ st ));
}
Function delRecursive ($ id, $ class_arr)
{
If ($ id = "") $ id = 0;
For ($ I = 0; $ I
If ($ class_arr [$ I] [3] ==$ id ){
$ Subid = $ class_arr [$ I] [0];
// $ This-> db-> delete ('tree', array ('id' => $ id ));
// $ This-> db-> delete ('tree', array ('id' => $ subid ));
Echo "$ id, $ subid \ n ";
DelRecursive ($ subid, $ class_arr );
}
}
}
------ Solution --------------------
$st = array($id);
do {
$cnt = count($st);
for($i=0;$i
if(in_array($class_arr[$i][3], $st)){
$subid=$class_arr[$i][0];
if(!in_array($subid, $st)) {
$st[] = $subid;
$this->DB_MT->delete('tree', array('id' => $id));
$this->DB_MT->delete('tree', array('id' => $subid));
}
}
}
}while($cnt < count($st));