for文の中での別変数の扱い
PHPを勉強中の初心者ですが、for文の中でカウンタ変数とは別の変数を動かすことがうまくできず、無理やり解決させたのですが、これでいいのか悩んでおります。
課題としては、7枚のくじを4人で引いていって、外れくじ(=x)を引いたらその人はいなくなるというルールで、くじを最後まで順番にひいたあと、残る人の番号をだすという内容です。最初はくじを引く順番で増える変数$iを人数で割った余りで誰が引いたかを見れると思っていたのですが、unsetでデータを削除したらそれができないことに気づきまして別の変数$jを入れることにしました。悩んだ結果、以下のようなソースになり、一応結果としては望む内容になったのですが、、、これは無駄が多いのでは、と感じております。
コードまで書いていただこうとは思ってないのですが、こういう場合にどう考えるのがよいか、教えていただけると助かります。
※実際に取り組んでいる課題としては全く別の内容です。こちらに掲載するために詰まった箇所に絞って内容を変えました。
該当のソースコード
PHP
1$members= [1,2,3,4]; 2$cards = ["a","a","x","a","a","a","x"]; 3$num_of_members = 4; 4$num_of_card = 7; 5 6$j=0; 7for($i=0; $i<$num_of_card; $i++){ 8 if($cards[$i] == 'x'){ 9 unset($members[$j]); 10 $members = array_values($members); 11 $num_of_members -= 1; 12 if($j == $num_of_members){ 13 $j = 0; 14 } 15 16 }else{ 17 $j += 1; 18 if($j == $num_of_members){ 19 $j = 0; 20 } 21 } 22} 23foreach ($members as $member){ 24 echo $member."\n"; 25}
試したこと
unsetで要素を削除して、array_valuesでキーを振りなおしたのがダメだったのか?と思って、やり方を変えてみたのですがうまくいきませんでした。
回答3件
あなたの回答
tips
プレビュー