• ベストアンサー

ループ処理でシンプルにまとめる方法を教えてください。

(例) for ($j=0;$j<=count($arGroup)-1;$j++){ for ($i=0;$i<=count($arGroup[$j])-1;$i++){ if($j == 0){ echo "(".$number[0][$i+(count($ar)-1)].")\n"; }elseif($j == 1){ echo "(".$number[0][$i+(count($ar)-1)+(count($arGroup1))].")\n"; }elseif($j == 2){ echo "(".$number[0][$i+(count($ar)-1)+(count($arGroup1))+(count($arGroup2))].")\n"; }elseif($j == 3){ echo "(".$number[0][$i+(count($ar)-1)+(count($arGroup1))+(count($arGroup2))+(count($arGroup3))].")\n"; } } } このループ処理をもっとシンプルにしていきたいと思います。 jの数が増えていく予定)+(count($arGroup数字))が追加されていくような形になります。 どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

やりたい事を理解できているかどうか自信が無いので 期待通りに動くかどうかも未確認ですが、こんな感じかな? for ($j=0;$j<=count($arGroup)-1;$j++){ for ($i=0;$i<=count($arGroup[$j])-1;$i++){ $key=$i+(count($ar)-1); for ($k=1;$k<=$j;$k++){ $key+=count(${'arGroup'.$k}); } echo "(".$number[0][$key].")\n"; } }

hunter_999
質問者

お礼

完璧です。 なんとお礼をいったらいいか 本当に感謝してしております。 ありがとうございました。

その他の回答 (1)

noname#87667
noname#87667
回答No.2

すでに回答No.1で決着がついているようなので、この質問を締め切って、No.1の方に良回答としてポイントを提供してください。 以下、気になった点を書きますが、本題とは無関係なので、ポイントは不要です。 if文での分岐を使う場合は、2~3パターンが上限だと思います。それ以上の場合は、switch文を使ってください。 あと、「$number[0][$i+(count($ar)-1)]」が何度も使われているようなので、if文の前で「$hoge=$number[0][$i+(count($ar)-1)];」と変数hogeを定義して、それを使い回すと短くなりますよ。