• ベストアンサー

配列を逆に変更したい!!

こんばんわ。質問させてください。 実は、掲示板などのアイコン選択フォームの配列で あいこん1 あいこん2 あいこん3 と記憶されているものを、下から逆に表示したいです。reverseというものを使用するというのはなんとなくわかるのですがforeachのどの部分に入れれば良いのかわかりません。 問題のサブルーチンは以下です(k-bordのソース) 多分、foreachの前後かな?と思うのですが…。手動変更はこの場合、アイコンを自動登録にしているので無理なのです(ρ゜∩゜) どなたかお分かりでしたら教えてください! sub icon_read { (中略) if ($icn_mode) { print "<td width=\"220\" align=center>Icon\n"; print "<select name=icon class=\"form\">\n"; foreach (@ifile) { ($icn_num,$registrant,$icon_ml,$icon_hp,$iconhost,$icn_gif,$icon_w,$icon_h,$icn_name,$iconpass,$icontime)=split(/<>/,$_); $icon_01=$icn_num.$icn_gif; if ($cicon eq "$icn_gif"){ print "<option value=\"$icon_01\">$icn_name\n"; }else{print "<option value=\"$icon_01\">$icn_name\n";}} print "</select> <input type=\"button\" value=\"sample\" onclick=\"window.open('$script2?mode=iconlook','','width=500, height=500, resizable=yes,scrollbars=yes')\" class=form onMouseOver=\"this.className='over';\" onMouseOut=\"this.className='out';\"></td></tr>"; $mhit = 0; $mbz = @mmb_nm; for($m = 0; $m <= $mbz; $m++){ if($cname eq $mmb_nm[$m]){ $mhit = 1; last; }}(中略)}}(中略)}

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

  • ベストアンサー
  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.3

foreachに掛ける前でなくても foreach (reverse @hoge) { としても可能です。 こうすると、@hogeの順番は保持したままforeachループにかけるときだけ逆順にできます。

monica_panda
質問者

お礼

有難うございます。その通りさせていただきまして、無事に設置できました!!

その他の回答 (2)

回答No.2

 reverse関数は配列を逆順にするものです。 例えば @test = ("A","B","C"); に関して使用した場合 @reverse = reverse @test; print join("\t",@reverse); とすると書き出しは C B A となります。  @ifileと言うのを逆順にしたいのであれば @ifile = reverse @ifile; で良いとは思いますが >手動変更はこの場合、アイコンを自動登録にしてい >るので無理なのです という部分がちょっと理解が出来ないので…。

monica_panda
質問者

お礼

有難うございます。無事に設置できました。 (あ。手動変更ってのは、今回、アイコンの順番という内容だったので、「単にログ開いて一個一個順番入れ替えれば言いだけでしょ?」っていうのは無理なんです。って意味でした。わかりにくくてスイマセン。)

回答No.1

場所はforeachの前になると。 @ifile = reverce(@ifile); foreach (@ifile) { ってなかんじでいかがでしょう?

monica_panda
質問者

お礼

有難うございます。無事に設置できました。

関連するQ&A