php - PHP里面的递归函数一会儿
问题描述
我正在做流行病棋盘游戏。我正在用PHP(大部分)制作游戏逻辑,当一个城市中有超过3个立方体时,它会发生爆发,即与该城市相连的城市将增加1个立方体。
现在,我在 PHP 中完成所有这些工作,并且我有一个函数可以增加城市中的立方体,并且对于与之相连的每个城市,爆发时也会增加,所以我在里面做一个递归函数尽管。
(我告诉你这一切是因为我要在例子中删减一些代码。希望我说清楚了)
PHP 函数
function AddInfectionCubes($city_name, $n_cubes, $game_id) {
$insert = "INSERT INTO game_city(id_game, city_name, disease_cubes) VALUES('$game_id', '$city_name', '$n_cubes')";
$res = mysqli_query($conn, $insert);
if(!$res) {
$sql_cubes = mysqli_query($conn, "SELECT disease_cubes FROM game_city WHERE city_name='$city_name' AND id_game='$game_id'");
$get_cubes = mysqli_fetch_assoc($sql_cubes);
$disease_cubes = $get_cubes['disease_cubes'] + $n_cubes;//quantidade de cubos após adicionar outros aos que já existiam
if ($disease_cubes > 3){
$update_outbreak_marker = mysqli_query($conn, "UPDATE Game SET outbreak_marker = outbreak_marker + 1 WHERE id = '$game_id'");
$outbreak_cities = mysqli_query($conn, "SELECT city_to FROM connections WHERE city_from = '$city_name'");
while ($c = mysqli_fetch_assoc($outbreak_cities)){
$city_to = $c['city_to'];
$n_cubes = 1;
AddInfectionCubes($city_to, $n_cubes, $game_id);
}
} else {
$update = mysqli_query($conn, "UPDATE game_city SET disease_cubes='$disease_cubes' WHERE city_name='$city_name' AND id_game='$game_id'");
}
}
};
AddInfectionCubes($city_name, $n_cubes, $game_id);
我没有做错什么,但是递归函数不起作用。是因为它在一段时间内吗?
笔记
如果我不让它成为一个递归函数,它会完美运行(但不会做爆发的事情)。sql好,变量好等等。
问题
如果没有递归函数,我有什么办法可以解决这个问题?我可以用一段时间做吗?
解决方案
推荐阅读
- logging - Ceph 日志格式信息
- c# - 使用附加/删除通过 Id 删除 EF Core 实体导致 InvalidOperationException
- sql - 选择一个表的所有记录,其中包含另一个具有特定 id 的两条记录
- jenkins - JenkinsFile 中的“没有这样的库资源”错误
- kinect - 哪些反射面会影响 Kinect V2 对骨骼关节的检测?
- customization - 如何将 IBM Cognos 11.0.5 中默认主页视图的定制重置为默认欢迎页面
- c++ - 函数中的 c++ using 语句,后跟函数名(对于 ADL?)
- java - 如何为对象实现arrayList
- kubernetes - GKE 上另一个 Kubernetes 集群中 Pod 的 DNS
- ios - 覆盖协议扩展默认实现