No.4ベストアンサー
- 回答日時:
forとforeachは使い方次第で同じ様な使い方はできますが、
それぞれで特性があります。
foreachの場合
連想配列などのループに適している。
readdirなどによるディレクトリ内ファイル表示で使う
配列の内容でsortをかけたりするのが簡単
forの場合
単純なループ(1を10回足すなど)に適しています。
配列でループすると同時に、配列番号も取れる。
という感じでしょうか。
というように処理の内容によって使いわける事はできますが
同じような使い方もできます。
配列を総なめするような場合は
foreach $array ( @arrays ){
}
for($i=0;i<scalar(@arrays);$i++){
}
という様にループさせる事ができます。
私自身は、foreachをよく使いますが、処理の内容に
よってforも使います。
結局は特性にも書いたように、どちらのループが
処理に合っているかを考えて使えば問題無いと思います。
あと、while()の事も忘れないでくださいね(笑)
#使い方はすこし異なりますが、同じように使う事はできますから(^^;
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?5a7ff87)
No.5
- 回答日時:
Effective Perlと言う本にはfor文とforeach文の機能は全く同じと書いています。
そう言う意味では#3の方の意見が正しいです。実際私はforeach文は使いません。全てfor文を使っています。
同じ機能ならなくせばいいではないかと言われますが、この辺がPerlの良いところでもあり悪いところでもあるのだと思います。書き方に自由度があると言う点は良い所ですが、同一機能で2つの書き方があると言うことは可読性を悪くし、あまり良いとは言えません。
ただfor文はちゃんと終了条件を書かないと簡単に無限ループになりますが、foreachで配列の値を順番に取り出すループのさせ方では絶対に無限ループになりません。
後は適当にお好きな方を使えばいいと思います。
No.2
- 回答日時:
当たり前のことだが、foreachは配列の要素についてのループだから、
配列を使わないループには使うことができない。
例えば1から10までの数を足すといったループ
for($i=1;$i<=10;$i++){$sum+=$i;}
配列を使ってないのでforeachの使いようがない。
(もちろん適当な配列を作ってforeachを使うように書きなおすことはできるが
そんなややこしいことをする意味がない)
また、配列の添え字について何か計算を行いたいならforを使う必要がある。
例えば、0から10までの偶数を配列@evenに入れたい場合
for($i=0;$i<=5;$i++){$even[$i]=$i*2;}
foreachでは配列の添え字が参照できないので、自分でカウンタ変数を
入れてやらなければならないが、forならその手間が省ける。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 not only but also 1 2023/01/07 13:34
- 英語 Is to play soccer fun for you? は、正しい英文ですか? 1 2023/05/08 12:37
- 英語 インスタの文章に ”Thank you for 2022” と書いている方がいて、この文章の場合th 5 2023/01/03 17:23
- 英語 方向を表すforとtoについて この2点の違いについてですが、例えばThe train is bou 5 2023/01/21 00:50
- Visual Basic(VBA) For~Nextステートメントの終了条件について 1 2023/01/08 18:36
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- 英語 【英語】 “be going to” と “will” がどちらかしか使えないとき、どちらも使っても 7 2022/12/12 10:42
- 英語 中3の英語についてです。 have been 〜ing (現在完了進行形)の使い道がよくわかりません 8 2022/06/08 18:02
- その他(プログラミング・Web制作) プログラムはif文とforループが書ければなんとかなるので楽勝?? 6 2022/12/26 10:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二次元配列における要素数のは...
-
エクセルVBAでTransposeの不思議
-
チェックボックスのperlでの値...
-
クラスに配列を渡す方法
-
フローチャートを教えてください
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
MATLABの関数で配列の要素を返...
-
Perlで<select multiple>の複数...
-
perl qw(aaa bbb ccc)[$hoge]...
-
UWSCの終了の仕方
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
【VBA】全て空白のセルの列の非...
-
DoEventsが必要な理由について
-
範囲指定したセルを1つずつ飛...
-
VBのReturnの使い方
-
フラグについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
Strawberry Perl for Windows ...
-
リストボックスに縦スクロール...
-
二次元配列のインデックスについて
-
文字の整列(printf)
-
エクセルVBAでTransposeの不思議
-
クラスに配列を渡す方法
-
二次元配列における要素数のは...
-
Excel VBA ユーザーフォームの...
-
perlで配列の要素が空なのを知...
-
perlで2次元配列をサブルーチ...
-
マクロ Publicでの配列定義
-
Dim flag(4) as boolean で配列...
-
参照配列の要素数の求め方は?
-
チェックボックスのperlでの値...
-
VB6で配列の最大値を簡単に求め...
-
jcode->jfold で禁則処理
-
DataGridViewに配列の値を表示...
-
VBScript 配列
-
配列を使わずに、数字(連番)...
おすすめ情報