wake-up-neo.net

die zugewiesene Variable funktioniert nicht während der Verwendung der Schleife PHP

Ich arbeite an Do While loop in meinem Projekt, es funktioniert feines erstes Mal

Vor while statement, ich einem Array einen Wert zugewiesen Ich konnte das Array erfolgreich am Ende des Codes drucken, ABER sein werde 0, wenn ich oben in der Schleife nachschaue

Code:

$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);

Wenn ich in anderweitig drucke, funktioniert es, aber ich kann nicht drucken

6
Asesha George

Ich werde alle Namensprobleme ignorieren, aber das Problem mit der while-Schleife ansprechen:

$loopend =0;
do {
    ...
    if(membercount($asmallestsponid)<3) {
         $loopend = 1;
    }else{
      ...
    }
while ($loopend == 1);

Es gibt zwei Möglichkeiten:

  1. Die if-Bedingung ist true : Wenn ja, $loopend wird 1 erhalten, also die Schleife weiter (was nicht zu dem Ruf passt, den er "Schleife-Ende" nennt, aber was auch immer ...)

  2. Die if-Bedingung ist false : Dann bleibt der $loopend derselbe (init wie 0), so dass die Schleife stoppt

IMHO - das vereinfacht deine Schleife:

do {
    ...
while (membercount($asmallestsponid)<3);
5
dWinder

Es gibt mehrere Probleme mit Ihrem Code. Zuallererst tut das nichts:

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

da die nächste Zeile hinter diesem Code steht:

$firstsponarray= getUserArray($poolafirtsid);

was die vorherige Zuweisung von $firstsponarray überschreibt. 

Zweitens ändert sich der Wert von $looparray in der do-Schleife nicht, sodass es immer ein leeres Array ist. Ich habe diese Zeile gefunden:

$rooparray=membercount($avalue);

ich gehe davon aus, dass es sich um einen Tippfehler handelt, und die korrekte Zeile ist $looparray=membercount($avalue);. Gleiches mit der Zeile $aarraylist[$avalue]=$rooparray;. Die Änderung bewirkt jedoch auch nichts, da $firstponarray aus dem oben beschriebenen Grund niemals $looparray gleich ist.

Versuchen Sie zunächst, Ihren Code zu debuggen. Wenn das Problem weiterhin besteht, buchen Sie den aktualisierten Code.

0
José A. Zapata

Wir wissen nicht, was membercount($asmallestsponid) zurückgibt, aber es scheint (am wahrscheinlichsten), dass es beim ersten Durchgang in den ersten Durchgang geht 

} else {
                $looparray = $arraymer;
                //print_r($looparray);
}

der Wert von $loopend ändert sich nicht, d. h. bleibt bei 0 und vergleicht beim ersten Durchlauf 0 mit 1 und beschließt, die do {} while-Schleife als 0 != 1 zu beenden.

0
Alexey