icon
icon

PHPでforeach文を使う方法【初心者向け】

プログラミング初心者向けに、【PHPでforeach文】を使う方法を解説した記事です。foreach文は、配列の要素がある分だけ繰り返し処理することができます。連想配列でも使うことができるので、サンプルコードをもとに紹介。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

プログラミング初心者向けに、PHPの基礎を紹介する記事です。

この記事ではPHPにおけるforeach文とその使い方、途中で処理をスキップする方法を学んでいきます。

 

また、PHPの実行結果をブラウザで表示するためにWebサーバ上にPHPファイルを置いて実行しています。

開発環境はXAMPPを使っていますが、他のWebサーバでも下記のコードの動作確認は可能です。

 

目次

1時間でできる無料体験!

 

foreach文とは

配列は一連のまとまったデータを扱うのに便利な変数です。

その配列の要素をまとめて処理したいときに使われるのがPHPforeach文です。

ほかにも while文for文などがありますが、foreach文がより簡潔に記述できます。

foreach文では配列の各要素に繰り返し(ループ)処理を実行しますが、while文やfor文のように、繰り返しを終了する条件を記述する必要はありません。

なぜなら、配列の要素がある分だけ繰り返し処理したらループを抜けるためです。

 

大石ゆかり

for文やwhile文の他にforeach文もあるんですねー。

田島悠介

配列や連想配列を展開したいときや、配列などの値を変更する必要がない場合に便利なんだ。

大石ゆかり

連想配列にも使えるんですか?配列のように添え字が数字じゃないですよね?

田島悠介

その通り!それでも、順番に展開してくれるんだ。では、foreach文を実際に書いてみよう!

 

[PR] PHPプログラミングで挫折しない学習方法を動画で公開中

foreach文を書いてみよう

foreachは、次のように書くことができます。

foreach文の書式1

<?php

foreach ( <配列の変数> as <各要素が格納される変数> ) {

// ループ処理をここへ記述

}
?>

 

PHPで配列を使う方法を参考に、実際に書いてみましょう。

たとえば $fruits という変数を作り、これを配列にします。

<?php
$fruits = [ “りんご”, “オレンジ”, “ぶどう” ];
foreach ( $fruits as $fruit ) {

print $fruit. “<br>”;

}
?>

 

これをWebサーバ上で実行すると次のような画面が出力されます。

りんごオレンジぶどう

りんご、オレンジ、ぶどうと、$fruits 配列に含まれていた3つの要素に対して繰り返し処理(printで出力)を実行できました。

これが foreach の基本的な使い方です。

 

連想配列でも使える

ここまでは単純な配列を扱いましたが、PHPの連想配列でも同じようにforeach文で処理できます。

今回は要素のキーの値も取り出しています。

foreach文の書式2

// 配列要素のキーと値のペアを取り出すとき

foreach (<配列の変数> as <各要素のキーが格納される変数> => <各要素が格納される変数> ) {

// ループ処理をここへ記述

}

 

同じように $fruits 配列を使いますが、それぞれの要素がキーと値のペアを持っています。

<?php
$fruits = [ “apple” => “りんご” , ”orange” => “オレンジ”, ”grape” => “ぶどう” ];
foreach($fruit as $key => $value){

print $value . ”は英語で書くと” . $key . “です<br>”;

}
?>

 

Webサーバ上実行してみましょう。

以下のような結果が表示されます。

appleはりんごです

このように連想配列も同じようにforeach文で扱うことができました。

 

コラム

コスパとタイパ、両方結果的に良くなる良くなる学び方とは?

「スクールは高いし時間も縛られて効率が悪い」と考える方は多いと思います。
もちろん、時間も費用もかかることは間違いありません。
ただ 結果的に無駄な学びにお金も時間もかける方がリスクが高いという考えもあります。

コスパ・タイパ最適化の参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困ったときに、質問や相談できる相手がいるため挫折しなかった
  • ・プロとして必要なスキルのみを深く学べたので無駄がなかった
  • ・副業案件の提供と納品までのサポートがあったので目的を達成できた

安価・短期間で広く浅く学んでも意味がありません。 本当に自分の目的が達成できるか、それが重要です。
自分にどのスキルや学び方が合っているか、どんな学習方法かなど、お気軽に 無料相談 に参加してみませんか?

カウンセラー・現役のプロへ、何でも気軽に無料相談可能。 30分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

途中で処理をスキップ

配列の繰り返し処理の途中で処理を抜けたり、その回だけ飛ばしたりしたい時があります。

例えば、配列の中の特定の要素を探す場合、該当する要素が見つかったらそれ以降は、繰り返し処理は必要ありません。

このような時に役に立つのが、continue文break文です。

 

continue文とbreak文

continue文は、その回の処理をスキップして、次の繰り返し処理から続行します。

break文は、foreach文自体を抜けます。

文章だと分かりづらいかもしれませんので、以下のコードで説明します。

 

continue文を使った場合

foreach ( $fruits as $fruit  ) {

//  処理1

contiue;

// 処理2

}

上のコードで、繰り返し処理中contiue文が実行されると、処理2がスキップされて、次の繰り返し処理に移ります。

 

break文を使った場合

foreach ( $fruits as $fruit  ) {

//  処理1

break;

// 処理2

}

// 処理3

上のコードで、繰り返し処理中break文が実行されると、foreach文の繰り返し処理はその時点で終了し、foreach文を抜けた先の処理3が実行されます。

 

foreachでリンクリストを作成

最後にforeach文が実際に使われる例として、リンクのリストを表示するページを作成しましょう。

ここでは、画面の体裁を整えるために Bootstrap4を使用しています。

以下のコードを実際に書いて試してみましょう。

<?php
    $linkItems = [
        ‘https://www.yahoo.co.jp’ => ‘Yahoo’,
        ‘https://www.msn.com/ja-jp’ => ‘MSN’,
        ‘https://www.google.co.jp’ => ‘Google’,
    ];
?>
<!DOCTYPE html>
<html lang=”ja”>
<head>
    <meta charset=”UTF-8″>
    <meta http-equiv=”X-UA-Compatible” content=”IE=edge”>
    <meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
    <title>Foreach文によるメニュー</title>
    <!– Bootstrap CSS –>
    <link rel=”stylesheet” href=”https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css”>
</head>
<body>
    <div class=”container”>
        <ul class=”list-group mt-5 w-50 mx-auto”>
            <?php foreach ($linkItems as $url => $text): ?>
            <li class=”list-group-item”><a href=”<?=$url ?>”><?=$text ?></a></li>
            <?php endforeach; ?>
        </ul>
    </div>
</body>

</html>

 

コードの説明

ページの先頭で、$linkItemsという連想配列を用意していますが、その要素として、キーの値に外部サイトへのURLを、要素の値にリンク名を指定しています。

body内の ulタグが、リンクのリストの要素になりますが、ここでforeachを使って、$linkItemsの各要素に対して以下の繰り返し処理を実行します。

  • 各要素のURLとリンク名を取り出し、それぞれ$url $text 変数に格納
  • $url をリンク先に、$textを表示文字列にしたリンクタグ(a)を作成して、これをli要素の内側に配置

このようにして、リンクの情報を格納した連想配列から実際にリンクのリストを作成できました。

コードを実行した結果

リンクのリスト

 

1時間でできる無料体験!

おわりに

この記事では、foreach文についてコードを書きながら使い方を分かりやすく説明しました。

foreach文は、PHPで配列の要素を処理する際には頻繁に使われる制御構文ですので、これを機会に使いこなせるようにしておくと良いでしょう。

 

執筆してくれたメンター

メンター安野(やすの)

Webアプリケーションエンジニアとして長年健診業界で業務システムの開発に従事してきました。
テックアカデミーではPHP/Laravelコースを担当しています。
開発実績: 健康診断システム、電話予約システム、検査管理システム、各種データ処理ツール

 

大石ゆかり

連想配列は何が入っているのかわからないので、順番に名前と値を取得できるのは便利ですね。

田島悠介

そうそう。あと、foreach文のほうが少し速かったりもするんだ。

大石ゆかり

では、配列や連想配列の単純な展開では、foreach文がいいんですね。

田島悠介

その通り!繰り返し文だけで何個もあるけど、他のプログラミング言語でも使うので、がんばって覚えよう!

 

テックアカデミーでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する