foreachについて理解したい人向け
foreachとは?
foreachの書き方が知りたい。
復習したい。
このような疑問を解決します。
本記事の内容
・foreach文とは?
・foreach文の書き方1つ目
・foreach文の書き方2つ目
foreachとは?
反復可能なデータ構造を順番に処理するための制御構造です。
foreach文は配列の要素を先頭から順に全て出力するような処理を簡単に書くことができます。
foreachの書き方【1つ目】
foreach文の書き方1つ目から覚えていきましょう。
以下のように書きます。
foreach ( 反復可能なデータ構造 as 要素 ) {
文
}
foreachは要素の中に反復可能なデータ構造を先頭から最後まで繰り返して入れます。
以下のソースコードを見てみましょう。
<?php $sports = ['サッカー', '野球', 'テニス', 'バスケットボール',]; foreach ($sports as $sport) { echo $sport . PHP_EOL; } //出力結果 サッカー 野球 テニス バスケットボール
解説していきます。
・$sportsに「サッカー、野球、テニス、バスケットボール」が配列型で入っています。
・反復可能なデータ構造に$sportsを指定しています。
・要素に$sportという新しい変数を指定しています。
・foreachにより、$sportsの中に入っていた「サッカー、野球、テニス、バスケットボール」が$sportの中に入りました。
・「echo $sport」により先頭のサッカーから最後のバスケットボールまで繰り返して出力されます。
最初に初期化した配列型の$sportsを先頭から最後までforeachで繰り返し処理を実行し、$sportに格納しています。
foreach文の書き方【2つ目】
2つ目の書き方を覚えましょう。
2つ目は、キーを取得することができます。
foreach ( 反復可能なデータ構造 as キー => 要素 ) {
文
}
要素の前にキーを記述し、取得することができます。
反復時の現在のキー(配列だと0,1,2,3…)や連想配列でのキーを指定して使用することができます。
以下のソースコードを見てみましょう。
<?php $sports = ['サッカー', '野球', 'テニス', 'バスケットボール',]; foreach ($sports as $key => $sport) { echo $key . '番目:' . $sport . PHP_EOL; } //出力結果 0番目:サッカー 1番目:野球 2番目:テニス 3番目:バスケットボール
解説していきます。
・$sportsに「サッカー、野球、テニス、バスケットボール」が配列型で入っています。
・反復可能なデータ構造に$sportsを指定しています。
・キーに$keyという新しい変数を指定しています。
・要素に$sportという新しい変数を指定しています。
・foreachにより、$sportsの配列のキー「0,1,2,3」が$keyの中に入りました。(0からの連続した整数)
・foreachにより、$sportsの中に入っていた「サッカー、野球、テニス、バスケットボール」が$sportの中に入りました。
・「echo $key . '番目:' . $sport」で$keyが0のとき$sportはサッカーが出力、$keyが1のときは$sportは野球が出力、$keyが2のときは$sportはテニスが出力、それを最後まで繰り返します。
配列とキーがわからない方は、以下の記事を参考にしてください。
連想配列でもキーの取得が可能
キーの指定は連想配列でも取得可能です。
以下のソースコードを見てみましょう。
<?php $sports = array( '長男' => 'サッカー', '次男' => '野球', '三男' => 'テニス', '四男' => 'バスケットボール', ); foreach ($sports as $key => $sport) { echo $key . 'は' . $sport . 'が好きです。' . PHP_EOL; } //出力結果 長男はサッカーが好きです。 次男は野球が好きです。 三男はテニスが好きです。 四男はバスケットボールが好きです。
解説していきます。
先ほどは添字配列ですので
サッカーのキーは0
野球のキーは1
テニスのキーは2
バスケットボールのキーは3
というように0からの連続した整数でしたが
今回は連想配列により、それぞれのキーを指定しています。
サッカーのキーは長男
野球のキーは次男
テニスのキーは三男
バスケットボールのキーは四男
「echo $key . 'は' . $sport . 'が好きです。'」によって$key(長男)は$sport(サッカー)が好きです。と出力されています。
連想配列がわからない方は以下の記事を参考にしてください。
まとめ
・foreachとは配列などの反復可能なデータ構造を順番に処理するための制御構造
・foreachの書き方は以下
foreach ( 反復可能なデータ構造 as 要素 ) {
文
}
foreach ( 反復可能なデータ構造 as キー => 要素 ) {
文
}
foreachは繰り返しの基本ですので、しっかり覚えておきましょう!