
phpでのforeach文の使い方|連想配列での使い方や参照渡しの方法も紹介
- SE
- phpでforeach文はどのような時に使いますか。
- PM
- 配列や連想配列などの繰り返し処理で使います。
目次
phpでのforeach文の使い方とは?
今回は、phpでのforeach文の使い方について説明します。配列などの繰り返し処理でforeach文を使用します。
phpでのforeach文の使い方に興味のある方はぜひご覧ください。
基本的な使い方
phpでのforeach文の基本的な使い方を紹介します。ここでは、配列に対してforeach文を使用します。
実際のソースコードを見てみましょう。
1 2 3 4 5 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); // 配列の要素を出力 foreach($my_array as $value){ echo $value . ""\n""; } |
実行結果は以下のようになります。
1 2 3 4 5 |
item1 item2 item3 item4 item5 |
連想配列での使い方
phpのforeach文は連想配列に対しても使用できます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 |
$my_array = array(""key1"" => ""value1"", ""key2"" => ""value2"", ""key3"" => ""value3"", ""key4"" => ""value4"", ""key5"" => ""value5""); // 連想配列の要素を出力 foreach($my_array as $key => $value){ echo ""key:"" . $key . "", value:"" . $value . ""\n""; } // valueのみを取得 foreach($my_array as $value){ echo ""value:"" . $value . ""\n""; } |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 |
key:key1, value:value1 key:key2, value:value2 key:key3, value:value3 key:key4, value:value4 key:key5, value:value5 value:value1 value:value2 value:value3 value:value4 value:value5 |
keyとvalueのセットを取得できます。
valueのみを取得することもできます。
このように、phpのforeach文は連想配列に対しても使用できます。
indexの取得
phpのforeach文では、配列のインデックスを取得することもできます。
実際のソースコードを見てみましょう。
1 2 3 4 5 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); // 配列の要素を出力 foreach($my_array as $index => $value){ echo ""index:"" . $index . "", value:"" . $value . ""\n""; } |
実行結果は以下のようになります。
1 2 3 4 5 |
index:0, value:item1 index:1, value:item2 index:2, value:item3 index:3, value:item4 index:4, value:item5 |
このように、phpのforeach文では配列のインデックスを取得することもできます。
最初と最後の要素に対する処理
phpのforeach文では、最初と最後の要素に対して処理できます。resetやendメソッドを使用します。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); // 配列の要素を出力 foreach($my_array as $value){ if ($value === reset($my_array)) { // 最初 echo ""first: "" . $value . ""\n""; } if ($value === end($my_array)) { // 最後 echo "" last: "" . $value . ""\n""; } } |
実行結果は以下のようになります。
1 2 |
first: item1 last: item5 |
配列の最初と再度の要素に対して処理していることが分かります。
このように、phpのforeach文では最初と最後の要素に対して処理できます。
参照渡し
phpでは、$value に &(アンパーサンド)を不可することで、foreach文で参照渡しができます。ただし、不用意に使っていると、予期せぬ不具合を混入させる可能性があります。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); var_dump($my_array); foreach($my_array as &$value){ $value = ""item""; } $value = ""hoge""; // これが不具合を混入する原因 var_dump($my_array); |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
array(5) { [0]=> string(5) ""item1"" [1]=> string(5) ""item2"" [2]=> string(5) ""item3"" [3]=> string(5) ""item4"" [4]=> string(5) ""item5"" } array(5) { [0]=> string(4) ""item"" [1]=> string(4) ""item"" [2]=> string(4) ""item"" [3]=> string(4) ""item"" [4]=> &string(4) ""hoge"" } |
最後の要素が予期せず変更されています。これを回避するには、foreachの外でunsetします。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); var_dump($my_array); foreach($my_array as &$value){ $value = ""item""; } unset($value); $value = ""hoge""; var_dump($my_array); |
実行結果は以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
array(5) { [0]=> string(5) ""item1"" [1]=> string(5) ""item2"" [2]=> string(5) ""item3"" [3]=> string(5) ""item4"" [4]=> string(5) ""item5"" } array(5) { [0]=> string(4) ""item"" [1]=> string(4) ""item"" [2]=> string(4) ""item"" [3]=> string(4) ""item"" [4]=> string(4) ""item"" } |
このように、phpのforeach文で参照渡しする場合は注意が必要です。
continue
phpのforeach文では、continueでループをスキップできます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); // 配列の要素を出力 foreach($my_array as $value){ if ( $value == 'item3' ) { continue; } echo $value . ""\n""; } |
実行結果は以下のようになります。
1 2 3 4 |
item1 item2 item4 item5 |
このように、phpのforeach文では、continueでループをスキップできます。
break
phpのforeach文では、breakでループを中断できます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
$my_array = array(""item1"", ""item2"", ""item3"", ""item4"", ""item5""); // 配列の要素を出力 foreach($my_array as $value){ if ( $value == 'item3' ) { break; } echo $value . ""\n""; } |
実行結果は以下のようになります。
1 2 |
item1 item2 |
このように、phpのforeach文では、breakでループを中断できます。
- SE
- foreach文で参照渡しができるのですね。
- PM
- 参照渡しで使用する場合は注意が必要です。回避するにはforeachの外でunsetする必要があります。
まとめ
いかがでしたでしょうか。phpでのforeach文の使い方について、紹介しました。
ぜひご自身でソースコードを書いて、理解を深めてください。