🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

【PHP入門】foreachループでお知らせ・ニュース一覧を動的に表示する方法

Webサイトでよく見かける「お知らせ」や「ニュース」の一覧。新しい情報が追加されるたびに手作業でHTMLを更新するのは大変ですよね。実は、PHPのforeachループを使えば、そんな手間のかかる作業を自動化し、いつでも最新の情報を表示できる動的なリストを簡単に作成できます。

この記事では、プログラミング初心者の方でもコピペするだけで「動く」を体験できるよう、実用的なお知らせ一覧の表示を例に、PHPの`foreach`ループの使い方を基礎から応用まで分かりやすく解説します。配列に格納したデータを一つずつ取り出して、HTMLのリストとして表示する流れを一緒にマスターしていきましょう!

PHPを動かすための準備(開発環境)まだXAMPP「ザンプ」を構築してない方は、【PHP入門】XAMPPのダウンロードとインストール方法を徹底解説!を参照してください。 インストール後、指定されたフォルダ(`htdocs`など)にPHPファイルを置けば、準備は完了です!

1. 基本のキ!PHPの配列とforeachループ

まずは、`foreach`が何をするものなのかを理解するために、その相棒である「配列」から見ていきましょう。

配列とは、複数の値をまとめて格納できる、箱のようなものです。例えば、お知らせの情報を「日付」と「タイトル」のセットで管理したい場合、以下のように配列を作ることができます。

<?php
// お知らせ情報を格納した配列
$news_items = [
  [
    "date" => "2025-07-03",
    "title" => "夏季休業のお知らせ"
  ],
  [
    "date" => "2025-07-01",
    "title" => "新サービス「〇〇」を開始しました"
  ],
  [
    "date" => "2025-06-20",
    "title" => "ウェブサイトをリニューアルしました"
  ]
];

// 配列の中身を確認(デバッグ用)
print_r($news_items);
?>

この配列という「箱」から、中身を一つずつ取り出して処理するのが`foreach`ループの役目です。構文はとてもシンプルです。

foreach (配列 as 取り出した要素を一時的に入れる変数) { ...処理... }

この構文を使い、先ほどの配列からタイトルだけを順番に取り出して表示させてみましょう。

<?php
$news_items = [
  ["date" => "2025-07-03", "title" => "夏季休業のお知らせ"],
  ["date" => "2025-07-01", "title" => "新サービス「〇〇」を開始しました"],
  ["date" => "2025-06-20", "title" => "ウェブサイトをリニューアルしました"]
];

// 配列から1件ずつお知らせ情報を取り出す
foreach ($news_items as $item) {
  // 取り出したお知らせのタイトルを表示する
  echo $item['title'] . "\n";
}
?>

このように、`foreach`は配列の中の要素がなくなるまで、自動的に処理を繰り返してくれます。これが動的リスト生成の心臓部となります。

2. 実践!foreachでお知らせ一覧を作成する

それではいよいよ本題です。先ほどの配列と`foreach`ループを使って、Webページに表示できるHTML形式のお知らせ一覧を作成します。以下のコードは、HTMLとPHPを組み合わせた最も基本的な形です。このままファイルにコピペすれば、ブラウザで表示を確認できます。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>お知らせ一覧</title>
    <style>
        body { font-family: sans-serif; line-height: 1.6; padding: 20px; }
        .news-list { list-style: none; padding: 0; border-top: 1px solid #ccc; }
        .news-list li { padding: 15px 10px; border-bottom: 1px solid #ccc; }
        .news-date { font-weight: bold; margin-right: 1em; color: #555; }
    </style>
</head>
<body>

    <h1>お知らせ</h1>

    <?php
    // お知らせ情報を配列として用意
    $notices = [
        [
            "date" => "2025-07-03",
            "title" => "夏季休業のお知らせ"
        ],
        [
            "date" => "2025-07-01",
            "title" => "新サービス「〇〇」を開始しました"
        ],
        [
            "date" => "2025-06-20",
            "title" => "ウェブサイトをリニューアルしました"
        ]
    ];
    ?>

    <ul class="news-list">
        <?php foreach ($notices as $notice): ?>
            <li>
                <span class="news-date"><?php echo htmlspecialchars($notice['date']); ?></span>
                <span class="news-title"><?php echo htmlspecialchars($notice['title']); ?></span>
            </li>
        <?php endforeach; ?>
    </ul>

</body>
</html>

このコードのポイントは、`