function check($num) {
$sn=$num;
$sql="select * from `a_dinghuo` where `num`='$num'";
$q=mysql_query($sql);
$row=mysql_num_rows($q);
if($row==1) {
$sn = check($num+1);// 修改这里
}
return $sn;
}
这样修改一下,不过在这里看不出递归的作用来

解决方案 »

  1.   

    确实是一个死循环!应该加上一个递归跳出!比如说判定2次或者超过某个数就跳出!<?php
    function check($num){
    static $array = array(1,2,3,4,5,6,7,8,9,10);
    $sn=$num;
    if(in_array($num, $array)){
    print $num.' ';
    $sn=($num+1);
    check($num+1);
    }
    return $sn;
    }
    print check(3);
    ?>
    输出:3 4 5 6 7 8 9 10 4
    如果你的数据库num记录很多且是序列的话,你会发现你的mysql语句执行的很高
      

  2.   

    楼上死循环不会吧,仔细看下
    $num+1   ......
      

  3.   

    $sql="select * from `a_dinghuo` where `num`='$num'";check($num+1);$num应该还是要类型统一下吧..
      

  4.   

    function check($num){
    static $sn;
    $sql="select * from `a_dinghuo` where `num`='$num'";
    $q=mysql_query($sql);
    $row=mysql_num_rows($q);
    if($row==1){
    $sn .= ($num+1);
    check($num+1);
    }
    return $sn;
    }