如果我使用“PHP函数,则使用无限循环”;而";或者,如果我使用“未完全完成的任务”;如果;而不是",;而";

如果我使用“PHP函数,则使用无限循环”;而";或者,如果我使用“未完全完成的任务”;如果;而不是",;而";,php,Php,我创建了一个函数来分配符合某些条件的所有发票(以前没有用户分配过发票,并且发票具有特定状态) 问题是,在上述条件为false之前,我无法使函数在循环中运行 如果我在函数中使用而,它将创建一个无限循环。 如果我在“while”的末尾使用break,或将while修改为“If”,即使条件仍然为真,该函数也只运行一次 $sql_activ_users = "SELECT User FROM Users WHERE STATUS='active' AND User !='X' ORDER by U_ID

我创建了一个函数来分配符合某些条件的所有发票(以前没有用户分配过发票,并且发票具有特定状态)

问题是,在上述条件为false之前,我无法使函数在循环中运行

如果我在函数中使用
,它将创建一个无限循环。
如果我在“while”的末尾使用
break
,或将while修改为“If”,即使条件仍然为真,该函数也只运行一次

$sql_activ_users = "SELECT User FROM Users WHERE STATUS='active' AND User !='X' ORDER by U_ID ASC";
$result_activ_users = mysqli_query($conn, $sql_activ_users);
$activ_users = mysqli_num_rows($result_activ_users);

function userallocation ($conn,$FI_toAllocate,$TP_toAllocate,$MM_Srv_toAllocate,$MM_Mat_toAllocate,$CCG_toAllocate,$result_activ_users) {

$checksql="SELECT COUNT(1) - COUNT(CpProcessor) AS NUMBER 
           FROM TGSB_DB 
           where Workflow like '%Qsent | Sensitive data modification%' 
           or Workflow like '%Qdeclined%' 
           or Workflow like '%QAccepted | Sensitive data modification%' 
           or Workflow like '%QCalled back%' 
           or Workflow like '%Qin process | Sensitive data modification%' 
           or Workflow like '%Qis due | Sensitive data modification%' 
           or Workflow ='' or Workflow is null";
$checkresult = mysqli_query($conn, $checksql);
$nullcount=mysqli_fetch_array($checkresult);
$cnt=(int)$nullcount[0];

while($cnt > 0){

foreach($result_activ_users as $k => $value){
...sql query to update...
}//foreach end
}//while end
}//end of function userallocation ()

我希望函数在
$cnt>0时执行,但函数当前在第一次运行后停止(如果我使用
if($cnt>0)
,或者如果我使用
while($cnt>0),则进入无限循环)

您应该在while循环中的
$cnt
中添加一个递减运算符,以停止无限循环

while($cnt > 0){
   foreach($result_activ_users as $k => $value){
      ...sql query to update...
   }//foreach end
  --$cnt; //pre-decrement
}//while end

您应该在while循环中的
$cnt
中添加一个递减运算符,以停止无限循环

while($cnt > 0){
   foreach($result_activ_users as $k => $value){
      ...sql query to update...
   }//foreach end
  --$cnt; //pre-decrement
}//while end

您知道开始时必须更新多少条记录吗?如果知道,您可以获取记录并更新它们,而无需在每次循环迭代期间检查计数。只需使用
for
循环:
for($i=0;$i<$cnt;$i++){
而不是
while
循环您在哪里修改
$cnt
以避免进入无限循环?您知道,开始时必须更新多少记录吗?如果是,您可以获取记录并更新它们,而无需在每次循环迭代期间检查计数。只需使用
for
循环:
for($i=0;$i<$cnt;$i++){
而不是
循环在哪里修改
$cnt
以不进入无限循环?