doucao8982 2013-11-16 21:14
浏览 37
已采纳

PHP递归函数问题

I am having trouble with the getNext() function...

If isTaken() == true, it does update last, but I'm not sure it is invoking the getNext() function as the function never returns $next.

If isTaken() == false, $next is returned.

Any ideas?

function isTaken ($id){
  $sql = "SELECT asset_no FROM tb_asset WHERE asset_no='" . $id . "'";
  $result = mysql_query($sql) or die(mysql_Error());
  if (mysql_num_rows($result)) return true;
  else return false;  
  mysql_free_result($result);
}


function getNext(){
  $sql = "SELECT last FROM app_asset";
  $result = mysql_query($sql) or die (mysql_error());
  $last = mysql_fetch_array($result);
  mysql_free_result($result);

  $next = ++$last['last'];

  if (isTaken($next)){
    $sql = "UPDATE app_asset SET last='" . $next . "'";
    mysql_query($sql) or die (mysql_error());
    getNext();
  } else {  
    return $next;
  }
}
  • 写回答

2条回答 默认 最新

  • dongyong2063 2013-11-16 21:29
    关注

    As Sable Foste pointed out, you will always need a return statement. In your case however, it looks like your code needs to be modified to

    if (isTaken($next)){
        //code
        return getNext();
    } else
        return $next;
    

    So the function will stop the recursion and return once isTaken($next) is false

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧