首页 > 解决方案 > 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好,变量好等等。

问题

如果没有递归函数,我有什么办法可以解决这个问题?我可以用一段时间做吗?

标签: phprecursionwhile-loop

解决方案


推荐阅读