在使用PHP的循环中,赋值变量不起作用

Ase*_*rge 6 php loops while-loop do-while

我正在Do While loop我的项目中工作,第一次工作正常.

之前while statement,我为一个数组赋值,我能够在代码底部成功打印数组,但是当我在循环顶部检查时变为0.

码:

$looparray = array();
$loopend = 0;
$arraymer = array();
$poolafirtsid = $previous_array_values; //previous array values

do {
   if (sizeof($looparray) == 0) {
       $firstsponarray = $poolafirtsid;
   } else {
       $firstsponarray = $looparray;
   }

   $firstsponarray = getUserArray($poolafirtsid);
   //get user arraylist of first

   foreach ($firstsponarray as $avalue) {
       $rooparray = membercount($avalue);
       $bsponarray = getUserArray($avalue);
       //get second users arraylist 9
       if (sizeof($bsponarray > 0)) {
           $barraymer = array_merge($barraymer, $bsponarray);
       }

       $aarraylist[$avalue] = $rooparray;
   }

   $asmallestsponid = getSmallestID($aarraylist);
   //get smallest id in the array

   if (membercount($asmallestsponid) < 3) {
       $loopend = 1;
   } else {
       global $pooldata;
       if (count($barraymer) > 0) {
           $pooldata = $barraymer;
       }
       print_r($pooldata);

   }
} while ($loopend == 1);
Run Code Online (Sandbox Code Playgroud)

当我打印在其他工作,但我无法打印do循环的开始,其显示数组大小为0

dWi*_*der 5

我将忽略所有名称问题,但解决您的while循环问题:

$loopend =0;
do {
    ...
    if(membercount($asmallestsponid)<3) {
         $loopend = 1;
    }else{
      ...
    }
while ($loopend == 1);
Run Code Online (Sandbox Code Playgroud)

有两种选择:

  1. if条件为:如果是这样,$loopend将得到1以便循环继续(这似乎不适合称他为"循环结束"但是什么......)

  2. if条件为false:则$loopend保持相同(init为0),以便循环停止

恕我直言 - 这将简化你的循环:

do {
    ...
while (membercount($asmallestsponid)<3);
Run Code Online (Sandbox Code Playgroud)