PHPのforeach文の使い方【初心者向け】

投稿日: 作成:   更新:

プログラミング初心者向けに、PHPでforeach文を解説します。
サンプルコードを使って分かりやすい説明を心がけたいと思います。

こんにちはNAGAです。
今回は、PHPのforeach文の書き方について解説します。

foreach文は、データベースから取得したデータを扱ったりするのによく利用するループ処理です。
他にもループ構文には「for、while」などがありますが、foreachは配列のために用意されたPHPの構文です。

しっかりと身に着けて行きましょう!

foreach文の使い方

早速ですが、foreach文の書き方です。
「東、西、南、北」をループ出力させてみました。

ソースコードをコピーして試してみてください。

一次元配列のループ

foreachを使用して、$listに入っている値を$valとして1つずつ取得してecho文で画面に表示します。

‘<br>’は改行です。

<?php

$array = [ '東', '西', '南', '北'];
 
foreach ($array as $val) {
    echo $val. '<br>';
}

?>

出力結果:

連想配列でも同じようにforeach文を使用できます。(出力結果は上と同じです)

<?php

$array = [ 
    'east'  => '東', 
    'west'  => '西', 
    'south' => '南', 
    'north' => '北'
];
 
foreach ($array as $val) {
    echo $val. '<br>';
}

?>

連想配列のループ(key, value)

asの右側に「$key => $val」と書くと、$listの中にある連想配列の左型側が$keyとして取得できるようになります。

<?php

$array = [ 
    'east'  => '東', 
    'west'  => '西', 
    'south' => '南', 
    'north' => '北'
];
 
foreach ($array as $key => $val) {
    echo $key. 'は、'. $val. 'です<br>';
}

?>

出力結果:

foreach文とは

foreach文の読み方は「フォーイーチ」と読みます。
配列の要素の数だけ処理を実行します。

構文の書き方は、一次元配列と連想配列の2種類あります。

一次元配列

foreach ($array as $val) {
    処理の実行
}

連想配列

foreach ($array as $key => $val) {
    処理の実行
}

ループの中断(break、continue)

forやwhileと同じように、foreach文もbreakcontinueが使えます。

breakとcontinueの違い

こちらの2つの違いは、

  • breakは、ループを抜ける
  • continueは、ループを次の配列要素にスキップさせる

という使い方の違いがあります。

breakの使い方

if文の分岐でbreakを使うことで、ループ処理を抜けることができます。
次の例では、「南、北」は出力されません。

<?php

$array = [ 
    'east'  => '東', 
    'west'  => '西', 
    'south' => '南', 
    'north' => '北'
];
 
foreach ($array as $key => $val) {
    if ($key == 'south') {
        // 「南」以降は処理を中断してループを抜ける
        break;
    }
    echo $key. 'は、'. $val. 'です<br>';
}

?>

出力結果:

continueの使い方

if文の分岐でcontinueを使うことで、ループ処理をスキップすることができます。次の例では「南」だけ出力されません。

<?php

$array = [ 
    'east'  => '東', 
    'west'  => '西', 
    'south' => '南', 
    'north' => '北'
];
 
foreach ($array as $key => $val) {
    if ($key == 'south') {
        // 「南」の場合はループをスキップする
        continue;
    }
    echo $key. 'は、'. $val. 'です<br>';
}

?>

出力結果:

forとの違い

次の様にfor文でもforeachと同じように配列要素をループさせることができますが、ソースコードの可読性が下がりますので、基本的に配列のループはforeachを利用しましょう

一次元配列

<?php

$array = [ '東', '西', '南', '北'];
 
for ($i=0; $i < count($array); $i++) { 
    echo $array[$i]. '<br>';
}

?>

連想配列

連想配列をforで出力するには、list関数とeach関数を使う必要があります。

each関数はPHP7.2.0で非推奨となっているので、よほどのことがない限りforeach文を使用しましょう。

<?php

$array = [ 
    'east'  => '東', 
    'west'  => '西', 
    'south' => '南', 
    'north' => '北'
];
 
for ($i=0; $i < count($array); $i++) { 

    // list関数とeach関数で、$keyと$valを取得する
    list( $key, $val ) = each( $array );
    echo $key. 'は、'. $val. 'です<br>';
}

?>

foreachを使って表を作ってみる

PHPのforeach文は、データベースから取得したデータをループさせることによく使います。

次の例では、データベースから取得したと仮定した配列を作成して、HTML上でループを回して住所一覧を作ってみました。

ソースコードをコピーして試してみてください。
よく使われるパターンですので、いざと言うときに役立つと思います。

<!DOCTYPE html>
<html>
<body>
    <?php

    // データベースから取得したと仮定して配列を作成
    $people = [
        ['name' => '佐藤', 'gender' => '男', 'address' => '東京都'],
        ['name' => '鈴木', 'gender' => '女', 'address' => '千葉県'],
        ['name' => '高橋', 'gender' => '男', 'address' => '埼玉県'],
    ];

    ?>
 
    <table border="1">
        <caption>住所一覧</caption>
        <tr bgcolor="#add8e6">
            <th width="50">名前</th>
            <th width="50">性別</th>
            <th width="100">住所</th>
        </tr>
 
        <!-- $personは何の変数名でも良いです -->
        <?php foreach ($people as $person) : ?>
        <tr>
            <td><?= $person['name'] ?></td>
            <td><?= $person['gender'] ?></td>
            <td><?= $person['address'] ?></td>
        </tr>
        <?php endforeach ?>
 
    </table>
</body>
</html>

出力結果:

まとめ

今回は、PHPのforeach文を解説しました。

一次元配列、連想配列のループ処理や、for文との違いがあって最初は覚えるのが大変かと思いますが、他のWEBプログラミング言語でもよく使われるので、仕組みだけでも覚えておくと良いですね。

プログラミング言語は、あくまでシステムを動かすだけの手段ですので、どんな書き方であっても、まずは正しく動かすことを目的としましょう


プログラミングスクールをお探しの方へ

プログラミング学習を挫折せずに続けて成功できる人は

「目的目標を明確にすること」
「質問・相談できる環境を作ること」
「自己解決スキルを身に着けること」

この3つを大切にしてると思います。

ただ漠然とプログラミング学習をしているだけでは
すぐに身に付きませんので、プログラミングスクールがおすすめです。

  • テックキャンプ
    本気でIT業界に転職したい方におすすめです。
    転職できなかったら全額返金があります。
  • DMM WEBCAMP
    国から認定されているスクールです。
    やむなく離職中の方など、条件を満たしている方は教育訓練給付金が支給されます。
  • TechAcademy
    1週間の無料体験があります。
    気軽にスクールを体験したい方向けです。