PHP根据返回值重复一个函数

时间:2013-03-13 19:16:33

标签: php

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

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";
}

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

while (($db_Total = getData($db_queryResult)) >= 300) {
  echo "is equal or higher than 300";
}
echo "is lower than 300";

答案 1 :(得分:0)

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

  • $arr = mysqli_fetch_array应为$arr = mysqli_fetch_array($db_queryResult)
  • 但是很多时候你调用mysqli_fetch_array它不会改变结果,因为你已经运行了一次实际的SQL
  • 或者你的意思是每次调用getData函数时只查看多行结果的一行 - 在这种情况下你不希望函数内部的while循环,它将使用数据库结果中的所有行
  • getData函数永远不会返回任何内容(没有return语句)
  • getData函数似乎被赋予了一个数据库结果集,但是调用它$db_Total除了检查它不是假y(if($db_Total)
  • 之外什么都不做 当list($foo) = bar()返回多个单独项目的数组时,使用
  • bar();不确定为什么你认为你需要它
  • elseif($db_Total <= 300){应为else
  • 要注意无限循环 - 你绝对保证最终会得到一个低于300的数字吗?