No.4ベストアンサー
- 回答日時:
forとforeachは使い方次第で同じ様な使い方はできますが、
それぞれで特性があります。
foreachの場合
連想配列などのループに適している。
readdirなどによるディレクトリ内ファイル表示で使う
配列の内容でsortをかけたりするのが簡単
forの場合
単純なループ(1を10回足すなど)に適しています。
配列でループすると同時に、配列番号も取れる。
という感じでしょうか。
というように処理の内容によって使いわける事はできますが
同じような使い方もできます。
配列を総なめするような場合は
foreach $array ( @arrays ){
}
for($i=0;i<scalar(@arrays);$i++){
}
という様にループさせる事ができます。
私自身は、foreachをよく使いますが、処理の内容に
よってforも使います。
結局は特性にも書いたように、どちらのループが
処理に合っているかを考えて使えば問題無いと思います。
あと、while()の事も忘れないでくださいね(笑)
#使い方はすこし異なりますが、同じように使う事はできますから(^^;

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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
テキストファイルで提出とは?
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
エクセルVBAでTransposeの不思議
-
perlで2次元配列をサブルーチ...
-
Strawberry Perl for Windows ...
-
マクロ Publicでの配列定義
-
クラスに配列を渡す方法
-
リストボックスに縦スクロール...
-
二次元配列のインデックスについて
-
Dim flag(4) as boolean で配列...
-
与えられた配列の順にソートす...
-
Excel VBA ユーザーフォームの...
-
VBA 二次元配列の1つ目を増...
-
プログラミング アルゴリズム
-
複数の配列の全ての組み合わせ...
-
二次元配列における要素数のは...
-
VB6で配列の最大値を簡単に求め...
-
バイナリデータの検索(VB.NET2008)
-
VBA 二次元配列 ループの書き方
-
VBA 多次元配列を用いてグルー...
-
VBA 条件
おすすめ情報