この章ではforeachの使い方について説明します。
foreachは配列の要素をすべて取り出す機能を持っています。
foreachの構文は以下の通りです。 では例をみてみましょう。 配列の要素が順番に変数(この例の場合にはs)にセットされで出力されます。
以下の順番で配列の要素を出力します。 for文で書き換えると以下のようになります。
配列の長さだけfor文を回すので条件式にはを指定しています。
「配列名.Length」で配列の要素数を取得できることを思い出してください。 結果は以下の通りです。 次の例では2次元配列のデータをforeachで取り出しています。 2次元配列の要素のforeachでの取り出し方は通常の配列と同じです。
この例では1つ1つの要素にを挟みながら出力しています。
結果は以下の通りです。
次の例ではジャグ配列のデータをforeachで取り出しています。 図式化すると以下の通りです。 結果は以下の通りです。
タグ: foreach
foreach文について知ろう
この章ではforeachについて説明します。
foreach文はすべての配列の要素を簡単に取り出すことができます。
今までは以下のように1つずつ配列からデータを取り出していました。 foreachを使用すると短い構文で簡潔に書くことが出来ます。 では例をみてみましょう。 では説明をしていきます。 配列$animalの中の0番目のデータから順番に取り出されて$valueに代入されます。
そして$valueに代入された値はで出力されることになります。
ですので、すべての配列のデータを順番に取り出すことが出来ます。 次は連想配列から配列のキーと値を取り出す方法について説明します。 キー変数とはキーが入る変数です。値変数とは値を入れる変数と言う意味です。
では例をみてみましょう。「$key=>$value」にはそれぞれが順に入り、print文で出力されます。 基本構文2は連想配列ではなくても使用することができます。
例を見てみましょう。この配列は連想配列ではありませんが、添え字の0には猫、添え字の1には犬、添え字の2にはライオン、添え字の3には象、添え字の4にはネズミが入っていますのでキーが入る変数には添え字が入ります。
つまり、自動的に$keyには0から順に添え字が当てられますので
結果は次のようになります。
0は猫
1は犬
2はライオン
3は象
4はネズミ
foreach文を理解しよう
この章ではforeach文について説明します。
今までは次のように1つずつ配列からデータを取り出していましが、foreachを使うとすべての配列の要素を簡単に取り出すことができます。
では例をみてみましょう。
foreachは、リストや配列の一番前から順番に$an変数にセットされて、ブロックの中身である文を実行します。
配列やリストの要素がすべてを変数に出力されたら繰り返しが終了します。
では例をみてみましょう。
最初の例では配列の要素をただ単に出力しただけですが、この例の場合には$anにを連結演算子で付けて出力しています。
はと同じ意味です。
このようにforeach内で配列の要素に変更を加えると元の配列まで影響を受けます。
試しにと出力すると分かりますがのように元の配列の要素まで変わっているのが分かります。
次の例をみてみましょう。
結果は12です。
プロセスは前の例と同じですが、foreachの中の変数である$goukeiを外で出力しています。
このようにブロックの中の変数を外で出力することが出来ます。
注意してほしいのが、この例ののようにforeach との間の変数はブロック外で出力することができません。
この例の場合は$hですが、この変数を制御変数と言います。
この制御変数はブロックの中でだけ有効な変数ですので、ブロックの外で同じ名前の変数を作成しても問題ありません。
では以下の例で確認しましょう。
以下の例の1行目の$anとforeachの$anはお互いに影響を受けません。全く違う変数になります。
次は制御変数を使わないで配列の要素を出力する方法について説明します。
構文は以下の通りです。
では次の例を上の構文を使って書き換えてみます。
以下のように書き替えることも出来ます。
制御変数を省略した場合はが制御変数として使われます。
はデフォルト変数と呼ばれています。
制御変数なので本当は以下の箇所にが隠れていますが、これは省略できます。
次はmap関数について説明します。
foreachに似た関数にmap関数が有ります。
この関数でもforeachと同じことが出来ます。
では例をみてみましょう。
map関数は、リストの要素を先頭から順番にブロックの中に代入され、何らかの操作を行った後、その結果をリスト、配列として返してくれます。
この例の場合にはmap関数のブロック内のデフォルト変数に順番に配列の要素が代入していきます。
上の例は以下の例と同じ意味です。
次の例をみてみましょう。
配列の各要素がに代入され、その変数と文字列であるとが文字列連結演算子で連結され、その結果が配列として@gtに代入されます。
結果は以下の通りです。 次の例をみてみましょう。
配列の要素がデフォルト変数に代入され、それに1が足されて、その結果が配列として@reに代入されています。
結果は「2 4 5 9 2」です。
次の例をみてみましょう。
以下の形式を添え字を使って書き替えます。
先ほどの例を添え字を使って書き替えた例が以下です。
この例の場合は配列を直接指定する代わりにを使っています。
「$#animal」は末尾の添え字の番号を意味します。
例えば以下の配列の末尾の添え字番号を求めるには$#animalと書きます
print $#animal;と書けば4が出力されます。
要素がたくさんある場合は最後の添え字が何番であるかわからなくなりますので、この方法は便利です。
では例の説明に戻りますが、の中の$anにはリストの0から4の数字が順番に入りますので、結果はです。
補足ですが、の他の使い方について説明します。
この例のように$#animalを添え字に使うことで配列の末尾の要素に新しいデータを入れることが出来ます。
つまり、ネズミをネッシーで上書きしています。
結果はです。
では次の例も補足ですが、$#animalと同じ意味を表わす添え字について説明します。
$animal[-1]のように添え字に「-1」を入力することでも配列の末尾の要素にデータを入れることが出来ます。
つまり、$#animalと同じです。
後ろから2番目の要素に何かデータを入れたい場合は以下のように添え字に「-2」を入れてください。
つまり添え字をマイナスで書くことで配列の要素に対して後ろからアプローチできます。