php递归函数中使用return无法放回值的注意事项
下面是一个递归函数,列出当前类别上机的所有类别。function list_class($table,$id,$name,$pid,$url,$str){
$url2 = str_replace("{CID}",$id,$url);
$str2 = ' >> <a href="'.$url2.'">'.$name.'</a> ' . $str;
$sql2 = "select * from {$table} where id = ".$pid;
$result2 = mysql_query($sql2);
if($row2 = mysql_fetch_assoc($result2)){
$this->list_class($table,$row2["id"],$row2["name"],$row2["pid"],$url,$str2);
} else {
return $str2;
}
}
上面这个函数看起来是没有什么问题的,不运行一下根本不知道他会有错误,return是无法返回值,。
正确的方式如下:
function list_class($table,$id,$name,$pid,$url,$str){
$url2 = str_replace("{CID}",$id,$url);
$str2 = ' >> <a href="'.$url2.'">'.$name.'</a> ' . $str;
$sql2 = "select * from {$table} where id = ".$pid;
$result2 = mysql_query($sql2);
if($row2 = mysql_fetch_assoc($result2)){
return $this->list_class($table,$row2["id"],$row2["name"],$row2["pid"],$url,$str2);
} else {
return $str2;
}
}
只是在函数前面加了个return,这个递归函数就可以正常返回值了。
不返回值的时候,也可以不加。
页:
[1]