0

我想知道如何重复一个函数,直到返回某个值。我认为这样的事情会起作用,但事实并非如此。

list($db_Total) = getData($db_queryResult); // a random number from a mysqli query result.

function getData($db_Total){
 if($db_Total){
   while($arr = mysqli_fetch_array){
      $db_Total = $arr['prize']; // set db_Total to database query amount
  }
 }
}
if($db_Total>=300){
 echo "is equal or higher than 300";

  while($db_Total >= 300){  // loop until you get a smaller result
   list($db_Total) = getData($db_queryResult);
  }
}elseif($db_Total <= 300){
  echo "is lower than 300";
}

我想最简单的说法是,我想只运行一次函数,如果该函数返回的值高于我不想要的值,我想再次运行该函数,直到它运行......这可能吗?

谢谢你的帮助。

4

2 回答 2

0

以下是该代码中的一些错误:

  • $arr = mysqli_fetch_array应该$arr = mysqli_fetch_array($db_queryResult)
  • 但是多次调用mysqli_fetch_array它不会改变结果,因为你已经运行了一次实际的 SQL
  • 还是您的意思是每次getData调用函数时只查看多行结果的一行 - 在这种情况下,您不希望该while函数内部的循环会消耗数据库结果中的所有行
  • getData函数从不返回任何内容(无return语句)
  • getData函数似乎被赋予了一个 DB 结果集,但调用它$db_Total并且除了检查它是否为 false-y ( if($db_Total))之外什么也不做
  • list($foo) = bar()bar()返回一个包含多个单独项的数组时使用;不知道为什么你认为你在这里需要它
  • elseif($db_Total <= 300){应该只是else
  • 当心无限循环——你绝对保证最终得到一个低于 300 的数字吗?
于 2013-03-13T19:28:58.240 回答
0
while (($db_Total = getData($db_queryResult)) >= 300) {
  echo "is equal or higher than 300";
}
echo "is lower than 300";
于 2013-03-13T19:19:22.517 回答