php - 递归函数不返回任何内容
问题描述
我遇到了递归函数的问题,该函数必须在存储数据之前检查 db 表中是否已经使用了 id。如果是,则必须将其计时 1000。如果仍在使用中,则必须对其计时 10,依此类推。
我知道我们应该在数据库中使用主键,但这是公司政策。
这是我的代码:
function checkIdExits($id_conf, $world, $index = 0) {
if ($index == 0) {
if (checkIdDB($id_conf, $world) === true) {
$id_conf = $id_conf * 1000;
//echo "times 1000 $id_conf";
} else {
return $id_conf;
}
} else {
$id_conf = $id_conf * 10;
//echo "times 10 $id_conf";
}
if (checkIdDB($id_conf, $world) === true) {
//echo "chek again $id_conf";
checkIdExits($id_conf, $world, 1);
} else {
echo $id_conf;
//return $id_conf;
}
}
checkIdDB
在数据库中执行查询,如果有行则正确返回 true,如果没有行则返回 false。
我在代码中输入的所有内容都echo
表明该算法执行了正确的操作。但是,只要它运行两次,该return $id_conf;
行就不会返回任何内容。
我尝试过使用echo
而不是,return
这似乎有效。
有人可以解释为什么吗?
解决方案
您必须在return
递归调用函数时使用,否则中间结果将丢失。
if (checkIdDB($id_conf, $world) === true) {
//echo "chek again $id_conf";
return checkIdExits($id_conf, $world, 1);
}
推荐阅读
- html - 边框不围绕框
- c# - 使用表达式类过滤实体
- enums - 在 Java 5 中引入枚举的必要性是什么
- python - 无法确定对使用 doc2vec 和随机森林分类器训练的数据集进行预测所需的格式
- php - Yii2 视图布局看不到任何带有 AppAsset 包的 js、css 文件
- php - 按数组 csv 中的关联列排序
- windows-10 - 仅在发布时运行命令
- azure - cosmosdb CreateDocumentChangeFeedQuery ChangeFeedOption StartTime 不返回文档
- jquery - 错误 500 无法加载存在 Nginx 的资源
- javascript - 如何更新 iframe 的 src 和 JavaScript 上的链接 onclick