再帰関数を書くのは初めてです。どこで間違ったのか確認してください。
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 =($ num+1);
check($num+1);
}
return $sn; }
データベース自体がこれを持っている場合value、次に Value +1
しかし、最終的に返されたのは元のパラメータでした...どこで間違ったのか聞いてもいいですか
どうもありがとう
-- ----解決済みの解決策--------------------データベースにその番号がないためです。
------解決策---------関数チェック($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回判定されるか一定数を超えると飛び出す! function check($num){
static $array =配列(1,2,3,4,5,6,7,8,9,10);
$sn=$num
if(in_array($num, $array)){
' ' を出力します。
$sn=($num+1);
戻り値
}
check(3);
?>
出力: 3 4 5 6 7 8 9 10 4
データベース num に多数のレコードがあり、シーケンスである場合、 mysql ステートメントの実行速度が非常に高い
------解決策------
上階に無限ループはありませんか? 次へ。
$num+1....
------解決策---------
$sql= "select * from `a_dinghuo` where `num`= '$num ' ";
check($num+1); $num は型を統一する必要があります。
------解決策---------
function check($num){
static $sn;
$sql= "select * from `a_dinghuo` where `num`= '$num ' "; $q=mysql_query($sql); ; if($row==1){
$sn .= ($num+1);
}
return $sn; 🎜> }