头一次写递归函数,烦请各位看看错哪里了,该如何处理
头一次写递归函数,烦请各位看看错哪里了
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;
}
我的思路是如果数据库本身有这个数值,那么该数值+1
可是,我最后返回的还是原来的参数...请问哪里错了
小弟在此多谢了
------解决方案--------------------
因为你的数据库里没有那个数。
------解决方案--------------------
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;
}
这样修改一下,不过在这里看不出递归的作用来
------解决方案--------------------
如果有的话,你的递归就会死循环,出不来了
------解决方案--------------------
确实是一个死循环!应该加上一个递归跳出!比如说判定2次或者超过某个数就跳出!
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语句执行的很高
------解决方案--------------------
楼上死循环不会吧,仔细看下
$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);
$row=mysql_num_rows($q);
if($row==1){
$sn .= ($num+1);
check($num+1);
}
return $sn;
}

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

PHP には、MySQL テーブル内のデータを削除する次のメソッドが用意されています。 DELETE ステートメント: テーブルから条件に一致する行を削除するために使用されます。 TRUNCATETABLE ステートメント: 自動インクリメントされる ID を含む、テーブル内のすべてのデータをクリアするために使用されます。実際のケース: HTML フォームと PHP コードを使用して、データベースからユーザーを削除できます。フォームはユーザー ID を送信し、PHP コードは DELETE ステートメントを使用して ID に一致するレコードを users テーブルから削除します。

PHPがMySQLに接続した後、ページは空白になり、DIE()関数が失敗する理由。 PHPとMySQLデータベースの間の接続を学習するとき、あなたはしばしばいくつかの混乱することに遭遇します...

多くのウェブサイト開発者は、ランプアーキテクチャの下でnode.jsまたはPythonサービスを統合する問題に直面しています:既存のランプ(Linux Apache MySQL PHP)アーキテクチャWebサイトのニーズ...

PCとモバイル側で同じページを共有し、キャッシュの問題を処理する方法は? Nginxでは、Baotaの背景を使用して構築されたPHP MySQL環境、PCサイドの作成方法と...

この記事のPHPの楽観的ロックおよびトランザクションと組み合わせて残高を控除する問題の詳細な説明では、PHP、楽観的ロック、データベーストランザクションのみを使用したバランス控除を詳細に分析します...

Redis データベースを効果的に監視することは、最適なパフォーマンスを維持し、潜在的なボトルネックを特定し、システム全体の信頼性を確保するために不可欠です。 Redis Exporter Service は、Prometheus を使用して Redis データベースを監視するように設計された堅牢なユーティリティです。 このチュートリアルでは、Redis Exporter Service の完全なセットアップと構成について説明し、監視ソリューションをシームレスに確立できるようにします。このチュートリアルに従うことで、Redis データベースのパフォーマンス メトリクスを効果的に監視するための完全に運用可能な監視セットアップを実現できます。
