foreach文とは?
foreach 文を用いることで配列の各要素に対して繰り返し処理を設定できます。
通常の for 文で、配列の各要素に対して処理を設定することもできますが、その場合には繰り返し回数の設定や、表示させる配列の配列番号を指定する必要があり、手間が掛かかります。
そこで使用できるのが foreach 文です。
foreach 文は配列専用の for 文で、この foreach 文を使いこなせると、配列に対する繰り返し処理の実装効率が格段に上昇するので、必ず覚えておきたいです。
それでは基本構文や実用例について見ていきましょう。
foreach文の基本構文と実用例
まずは基本構文から確認していきます。
foreach (配列名 as 変数名) {
繰り返したい処理
}
配列の各要素を変数に代入してから、繰り返したい処理を行うようなイメージです。
代入した変数を繰り返し処理の中で使用することができます。
それでは実用例を見ていきましょう。
<?php
$areas = [
"東京都",
"大阪府",
"福岡県",
"宮城県"
];
foreach ($areas as $area) {
echo $area . "\n";
}
?>
実行結果は下記の通りです。
東京都
大阪府
福岡県
宮城県
配列の各要素について、繰り返し処理が適用されています。
index を取得したい場合
次に index を取得してみましょう。index とは配列の各要素に自動で割り振られている配列番号のことです。
index 取得の構文は下記の通りです。
foreach (配列名 as $index => 変数名) {
繰り返したい処理
}
「as」の後ろに「$index =>」 を追加するだけです。
それでは実用例を見ていきましょう。
<?php
$areas = [
"東京都",
"大阪府",
"福岡県",
"宮城県"
];
foreach ($areas as $index => $area) {
echo "index:" . $index . ", area:" . $area . "\n";
}
?>
実行結果は下記の通りです。
index:0, area:東京都
index:1, area:大阪府
index:2, area:福岡県
index:3, area:宮城県
通常、配列の要素を取得する際には $areas[0] といった形で配列番号を指定しますが、その配列番号をこのように取得できます。
連想配列での使用
続いて連想配列に foreach 文を適用する方法を見ていきましょう。
連想配列に対して foreach 文を使う場合の構文は下記の通りです。
foreach (連想配列名 as $key => 変数名) {
繰り返したい処理
}
index の取得方法と似ていますね。
普通の配列の場合とは違い、キー名を指定できるようになっています。
それでは連想配列の場合の foreach 文の実用例を見てみましょう。
<?php
$areas = [
"関東" => "東京都",
"関西" => "大阪府",
"九州" => "福岡県",
"東北" => "宮城県"
];
foreach ($areas as $key => $area) {
echo $area . "は" . $key . "地方です。\n";
}
?>
実行結果は下記の通りです。
東京都は関東地方です。
大阪府は関西地方です。
福岡県は九州地方です。
宮城県は東北地方です。
このようにキー名と配列要素をセットで繰り返し処理に使用することができます。
応用:多次元配列での使用
更に応用として、多次元配列に foreach 文を適用する方法を見ていきましょう。
最初の基本構文と比較すると難しくなってきますが、ここまで分かれば foreach 文は理解できていると言っても過言ではないでしょう。
<?php
$areas = [
"関東" => ["東京都", "神奈川県", "埼玉県"],
"関西" => ["大阪府", "京都府", "奈良県"],
"九州" => ["福岡県", "鹿児島県", "長崎県"],
"東北" => ["宮城県", "青森県", "秋田県"]
];
foreach ($areas as $key => $area) {
echo $area[0] . ", " . $area[1] . ", " . $area[2] . "は" . $key . "地方です。\n";
}
?>
実行結果は下記の通りです。
東京都, 神奈川県, 埼玉県は関東地方です。
大阪府, 京都府, 奈良県は関西地方です。
福岡県, 鹿児島県, 長崎県は九州地方です。
宮城県, 青森県, 秋田県は東北地方です。
これまでは配列の各要素を $area で表示してきましたが、多次元配列の場合は $area[0], $area[1], $area[2] といった形で $area という配列変数を取り扱う形になります。
foreach文が使えない場合
ここまで配列専用の for 文として foreach 文の使い方を紹介してきました。
しかし foreach 文を使用すると逆に手間が掛かってしまうパターンも存在します。
そういった場合は通常の for 文を使用した方が良いです。
実際に例を見た方が理解が早いかと思いますので、コードを確認してみましょう。
<?php
$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for ($i = 0; $i < count($numbers) - 1; $i++) {
echo $numbers[$i] . " の次の要素は " . $numbers[$i + 1] . " です。\n";
}
?>
実行結果は下記の通りです。
1 の次の要素は 2 です。
2 の次の要素は 3 です。
3 の次の要素は 4 です。
4 の次の要素は 5 です。
5 の次の要素は 6 です。
6 の次の要素は 7 です。
7 の次の要素は 8 です。
8 の次の要素は 9 です。
9 の次の要素は 10 です。
こういった「次の要素を参照する」ような処理では通常の for 文を使用した方が良いです。foreach 文は index や key と各要素を結び付けて繰り返し処理を設定しているため、こういったパターンは向いていません。(できないことはありませんが…)
「次の要素を参照する」ような処理も使用することはありますので、foreach 文が使えないパターンも知っておくことが大切です。
おまけ:continueとbreak
ここからは余力があれば覚えておきたい使い方になります。
continue と break についてです。
簡単なアプリケーションを作る上ではあまり使用機会がないかもしれませんが、チームとして開発に携わる場合には使用頻度は高いです。まだ余裕がある人は頑張って覚えていきましょう。
簡単に説明すると continue は処理をスキップする役割を持ち、break は処理を中断させる役割を持ちます。
どちらも同じく繰り返し処理の中で使用することが多く、「条件に一致したら continue(break) させる」といった使い方をします。
実際に例を見た方が理解が早いかと思いますので、コードを確認してみましょう。
<?php
$areas = [
"東京都",
"大阪府",
"福岡県",
"宮城県"
];
echo "continue を追加した場合\n";
foreach ($areas as $area) {
if ($area === "大阪府") {
continue;
}
echo $area . "\n";
}
echo "\nbreak を追加した場合\n";
foreach ($areas as $area) {
if ($area === "大阪府") {
break;
}
echo $area . "\n";
}
?>
実行結果は下記の通りです。
continue を追加した場合
東京都
福岡県
宮城県
break を追加した場合
東京都
本来であれば繰り返し処理で「東京都」「大阪府」「福岡県」「宮城県」が表示されるはずです。
しかし continue を追加した場合では「大阪府」のみ飛ばされており、「東京都」「福岡県」「宮城県」しか表示されていないことが分かると思います。
break を追加した場合では「大阪府」の表示処理の前に break しているため、「東京都」しか表示されませんでした。
このように continue と break は for(foreach) 文の中で使用することが多いので、セットで使えるようになっておきましょう。
まとめ
ここでは foreach 文の、
- for 文との違い
- 基本構文と実用例
- index の取得方法
- 連想配列や多次元配列での使用方法
- foreach 文が使えない場合
- continue と break について
などについて解説しました。foreach 文は配列に対して繰り返し処理を設定することができる便利な処理で、開発でも使用頻度がとても高いです。これを機に foreach 文を使いこなせるようになり、レベルアップしてみてはいかがでしょうか。
初めは構文を見ながらで構いませんので、徐々にできるようになっていきましょう!
PHPの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、PHPに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。