PHPを使用してdowhileループで割り当てられた変数が機能しない
プロジェクトで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);
他の方法で印刷しても、do loopの開始を印刷できません。表示されている配列のサイズは、0です。
答え :
解決策:
名前の問題はすべて無視しますが、 while
ループの問題には対処します:
$loopend = 0;
行う {
..。
if(membercount($ asmallestsponid)<3){
{-コード-3}=1;
}そうしないと{
..。
}
while($loopend == 1);
2つのオプションがあります:
if条件がtrueの場合:
$loopend
は1になるため、ループは続行(これは彼を「ループエンド」と呼ぶのにふさわしくないようですが、これまでに何でも...)if条件がfalseの場合:
$loopend
は同じまま(initは0)なので、ループは停止しますIMHO-これによりループが簡素化されます:
do { ..。 while(membercount($ asmallestsponid)<3);
答え :
解決策:
{-code-1}
が何を返すかはわかりませんが、{-コード-6}最初のパスが入ります
} else {
$looparray = $arraymer;
//print_r($looparray);
}
$loopend
の値は変更されません。つまり、 0
のままで、最初のパスでと比較されます。 0
から1
になり、 do {} while
ループを{-codeとして終了することにしました。 -4}!= 1
答え :
解決策:
コードにいくつかの問題があります。まず第一に、このdoは何もありません:
if (sizeof($looparray)==0) {
$firstsponarray= $poolafirtsid;
} else {
$firstsponarray= $looparray;
}
そのコードの次の行は次のとおりです。
$firstsponarray= getUserArray($poolafirtsid);
これは$firstsponarray
の以前の割り当てを上書きします。
次に、 $looparray
doの値はdo
ループではまったく変更されません。したがって、常に空の配列になります。私はこの行を見つけました:
$rooparray=membercount($avalue);
これはタイプミスであり、正しい行は $looparray = membercount($ avalue);
です。 $aarraylist[$avalue]=$rooparray;
の行と同じです。ただし、これを変更してもdoは何も起こりません。これは、 $firstponarray
が$looparray
と等しくなることはないため、説明した理由によります。上部にあります。
最初にコードをデバッグしてみてください。問題が解決しない場合は、更新されたコードを投稿してください。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。