【PHP基礎⑤】ループ処理(繰り返し処理)について(foreach、for、while)

PHP基礎

この記事の監修者

三谷 将大

1997年 愛知出身。
業界5年以上。実務経験後に独立し、30社以上のホームページ制作やマーケティング支援を行っている。

ループ処理とは

ループ処理とは、同じ処理を繰り返し実行するための構文です。PHPには、foreach文、for文、while文という3つの主要なループ構文があり、それぞれ異なる用途や特性を持っています。
では、そのループ処理の使い方を解説していきます。

ループ処理の使い方

foreach文

foreach文は、配列や連想配列を繰り返し処理するのに適しています。配列の各要素に対して、順番に1つずつ処理を行います。

<?php
foreach ($配列の変数名 as $値の変数名) {
    繰り返す処理
}
?>

//例
<?php
$果物 = ["リンゴ", "バナナ", "オレンジ"];
foreach ($果物 as $フルーツ) {
    echo $フルーツ . "<br>";

// 出力結果
リンゴ
バナナ
オレンジ

$果物 as $フルーツは「配列の$ の値を$フルーツに定義する」という意味。
『変数を定義→処理を実行』という一連の流れが、値の数だけ繰り返し実行されています。

連想配列を処理する場合、キーと値の両方を取得することもできます。

<?php
$student = ["名前" => "太郎", "年齢" => 20, "学年" => "2年生"];

foreach ($studentas $key=> $value) {
    echo $key. ": " . $value. "<br>";
}
?>
//出力結果
名前:太郎
年齢:20
学生:2年生

while文

while文は、条件が真である間、ループを実行し続けます。条件が最初に判定されるため、条件が初めから偽であれば、一度も実行されません。

<?php
式1;
while (式2) {
    繰り返しする処理
    増減式
}
?>

例えば、以下のようなケースがあります。

<?php
$カウント = 0;

while ($カウント < 5) {
    echo "カウント: " . $カウント . "<br>";
    $カウント++;
}
?>
//出力結果
カウント:1
カウント:2
カウント:3
カウント:4
カウント:5

WordPress制作では以下のように使用するケースあります。

<!-- have_posts()、the_post()は予め用意されているWordPress関数 -->
<!-- 記事があるかどうかをif文で判断 -->
<?php if (have_posts()) : ?>
    <!-- 以下は記事がある場合の処理を実行 -->
    <ul>
        <?php while (have_posts()) : the_post(); ?>
            <!-- 記事の数だけ繰り返し出力するコード -->
            <a href="#">
                <img src="neco" alt="neco">
                <h2>
                    タイトルタイトルタイトルタイトルタイトル
                </h2>
            </a>
        <?php endwhile; ?>
    </ul>
<?php else : ?>
    <!-- 記事がなかったときの処理 -->
    <p>記事が投稿されていません</p>
<?php endif; ?>

<?php while (have_posts()) : the_post(); ?>について解説すると、
まずwhileでループを開始し、have_posts()trueを返す間(記事が存在する間)ループを続けます。各ループの開始時にthe_post()で記事のデータを呼び出し、 <?php endwhile; ?>までのコードを出力します。

for文

for文はWordPress制作ではあまり使用するケースはありません。軽くわかっていればOKです。

for文は、特定の回数だけループを実行する場合に使用します。一般的には、インデックス変数を使ってループの回数を制御します。

<?php
for (式1; 式2; 式3) {
    // 繰り返し実行する処理
}
?>

よくあるケースとしては数値をカウントして増やしていくときです。

<?php
for ($i = 0; $i < 5; $i++) {
    echo "カウント: " . $i . "<br>";
}
?>
タイトルとURLをコピーしました