如果我使用“PHP函数,则使用无限循环”;而";或者,如果我使用“未完全完成的任务”;如果;而不是",;而";
我创建了一个函数来分配符合某些条件的所有发票(以前没有用户分配过发票,并且发票具有特定状态) 问题是,在上述条件为false之前,我无法使函数在循环中运行 如果我在函数中使用如果我使用“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
而,它将创建一个无限循环。
如果我在“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
以不进入无限循环?