这个递归函数会使浏览器的内存饱和,因为它会调用树的所有子级来创建流程图。所以我正在寻找一种方法来限制递归
if(mysqli_num_rows($rq)>0) {
$kid = mysqli_fetch_assoc($rq);
$sq = "SELECT groupe_id FROM groupe_tbl WHERE groupe_groupe_id=$groupe_id";
$rq = IPT_query($sq);
if(mysqli_num_rows($rq)>0){
$kid['kids'] = array();
while($k=mysqli_fetch_assoc($rq)) {
$kid['kids'][] = get_kids($k['groupe_id']);
}
} else $kid['kids'] = false;
return $kid;
我试着用这个来限制孩子的数量。但这只会限制孩子的数量,因此并不能解决我的问题。
while($i<20 and $k=mysqli_fetch_assoc($rq)) {
$kid['kids'][] = get_kids($k['groupe_id']); $i++;
限制递归不是PHP的问题,编写递归函数时的基本思想是设置一个条件,当函数应该停止递归时,"告诉"该函数。
基于您使用的是oop方法还是过程函数。
但你可以用这样的东西来实现:
function get_kids ($limit = 1) {
if ($limit > 10) {
return false;
}
echo $limit . "n";
$limit++;
get_kids($limit);
}
get_kids(1);
或者,如果你使用oop,你可以使用前面的方法或下面的方法:
class class1
{
public $limit = 1;
public function get_kids()
{
if ($this->limit > 10) return false;
echo $this->limit . "n";
$this->limit++;
$this->get_kids();
}
}
$x = new class1;
$x->get_kids();