IT技術ブログ

PHPの配列ループforeach・forの書き方と使い分け

PHPで配列をループするなら、基本はforeachです。キーと値を使う書き方、for・while・do…whileとの違い、breakとcontinue、array_mapやimplodeの使い方を、コード例と使い分けの表で紹介します。

この記事の結論:PHPで配列をループするなら、まずは foreach ($list as $value) を使うのが基本です。番号(キー)も必要なら foreach ($list as $key => $value)、途中で止めるなら break、飛ばすなら continue を使います。for や while は「何回目か」を自分で数えたいとき、array_map は各要素を加工した新しい配列を作りたいとき、implode は配列を1つの文字列につなげたいときに向いています。

この記事の内容のご相談は株式会社bundlyzeへbundlyzeのシステム開発について見てみる

配列は複数の値を1つの変数にまとめて入れる仕組みで、ループ処理(繰り返し処理)はその配列の要素を1つずつ取り出して同じ処理をする方法です。この講座では、配列の作り方から、foreach・for・while などで配列をループする書き方と使い分けまでを、コード例つきで紹介します。

PHPを実行する環境が整っていない方は、下記から環境構築を行ってみてください!

配列とループ処理

PHPの配列は $list = ['php', 'sample']; のように角かっこで作り、$list[0] のように番号(0から始まる)で中身を取り出します。要素が増えると1つずつ書くのは大変なので、ループ処理でまとめて扱います。

配列の定義

PHPで配列を定義するには、[](角かっこ)の中に値をカンマ区切りで並べます。array() と書いても同じ配列になります(PHPマニュアルでは [] を「配列の短縮構文」と呼んでいます)。

Visual Studio Code

VSCodeで配列$listを定義し、要素を1つずつechoするPHPのコード

サンプルコード

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
echo $list[0];
echo $list[1];
echo $list[2];
echo $list[3];

画面表示

実際に画面表示を行うと、このようになります!

ブラウザに配列の値が改行なしで続けて表示された画面

改行をつけて表示

先ほどの配列をそれぞれ改行込みで表示を行いたい場合は、下記のように記載します

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
echo $list[0] . '<br>';
echo $list[1] . '<br>';
echo $list[2] . '<br>';
echo $list[3] . '<br>';
?>

このように画面表示がされるかと思います!

ブラウザに配列の値が1行ずつ改行して表示された画面

ループ処理

PHPで配列を繰り返し処理する方法は、foreach・for・while・do...while の4つの構文と、array_map・implode の2つの関数です。いちばんよく使う foreach は、この後の章で詳しく紹介します。

  1. foreach を使う方法(いちばんよく使う。次の章で紹介)
  2. for ループを使う方法
  3. while ループを使う方法
  4. do...while ループを使う方法
  5. array_map 関数を使う方法
  6. implode 関数を使う方法(ループではないが、1行で表示できる)

Visual Studio Code(for文)

VSCodeでfor文を使って配列をループするコード

サンプルコード(for文)

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
for ($i = 0; $i < count($list); $i++) {
    echo $list[$i] . '<br>';
}

Visual Studio Code(while文)

VSCodeでwhile文を使って配列をループするコード

サンプルコード(while文)

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
$i = 0;
while ($i < count($list)) {
    echo $list[$i] . '<br>';
    $i++;
}

Visual Studio Code(do…while文)

VSCodeでdo…while文を使って配列をループするコード

サンプルコード(do…while文)

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
$i = 0;
do {
    echo $list[$i] . '<br>';
    $i++;
} while ($i < count($list));

Visual Studio Code(array_map関数)

VSCodeでarray_map関数を使って配列の値を表示するコード

サンプルコード(array_map関数)

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
array_map(function($item) {
    echo $item . '<br>';
}, $list);

Visual Studio Code(implode関数)

VSCodeでimplode関数を使って配列を改行区切りで表示するコード

サンプルコード(implode関数)

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
echo implode('<br>', $list) . '<br>';

画面表示

実際に画面表示を行うと、どの書き方でもこのように1行ずつ表示されます!

ブラウザにphp・sample・test・loopが1行ずつ表示された画面

foreachで配列をループする(いちばん使う書き方)

実際の開発で配列を回すときは、for よりも foreach を使うことがほとんどです。要素の数を数えたり、番号を1つずつ増やしたりする必要がないので、書き間違いが起きにくくなります。

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
foreach ($list as $value) {
    echo $value . '<br>';
}

番号(キー)も一緒に使いたいときは、$key => $value の形で書きます。

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
foreach ($list as $key => $value) {
    echo $key . ':' . $value . '<br>';
}
// 0:php
// 1:sample
// 2:test
// 3:loop

書き方はPHPマニュアル:foreachのとおりです(2026年10月3日確認)。

連想配列(キーと値の組み合わせ)をループする

連想配列も、foreach ($配列 as $key => $value) と書けば、項目名(キー)と値を1組ずつ取り出せます。

画面に出す情報は、「名前」「年齢」のように項目名つきで持つことが多いです。この場合も foreach で同じように回せます。

php
<?php
$user = ['name' => '山田', 'age' => 28, 'city' => '大阪'];
foreach ($user as $key => $value) {
    echo $key . ':' . $value . '<br>';
}
// name:山田
// age:28
// city:大阪

データベースから取り出した一覧も、たいてい「連想配列の配列」になっています。その場合はループの中で項目名を指定して取り出します。

php
<?php
$users = [
    ['name' => '山田', 'age' => 28],
    ['name' => '佐藤', 'age' => 34],
];
foreach ($users as $user) {
    echo $user['name'] . '(' . $user['age'] . '歳)<br>';
}

ループを途中で止める・飛ばす(break と continue)

PHPのループを途中で終わらせるには break、その回だけ飛ばして次へ進むには continue を使います。foreach・for・while のどれでも同じです。

  • break:ループをそこで終わらせる
  • continue:その回の残りを飛ばして、次の要素に進む
php
<?php
$list = ['php', 'sample', 'test', 'loop'];
foreach ($list as $value) {
    if ($value === 'sample') {
        continue; // sample だけ飛ばす
    }
    if ($value === 'loop') {
        break; // loop に来たら終わり
    }
    echo $value . '<br>';
}
// php
// test

ループの中で配列の値を書き換えるとき

foreach の中で $value を変えても、元の配列は変わりません。元の配列を書き換えたいときは &$value(参照)を使い、ループの後で必ず unset($value) します。消し忘れると、後のループで最後の要素が上書きされる不具合の原因になると、PHPマニュアルでも注意されています(2026年10月3日確認)。

php
<?php
$prices = [100, 200, 300];
foreach ($prices as &$price) {
    $price = $price * 2;
}
unset($price); // 参照を切る
// $prices は [200, 400, 600]

array_mapは「加工した新しい配列」を作る関数

上の例では array_map の中で echo していましたが、本来は各要素を加工した新しい配列を返す関数です。元の配列はそのまま残ります(PHPマニュアル:array_map、2026年10月3日確認)。

php
<?php
$list = ['php', 'sample', 'test', 'loop'];
$upper = array_map(fn($item) => strtoupper($item), $list);
echo implode('<br>', $upper);
// PHP
// SAMPLE
// TEST
// LOOP

fn($item) => ... はアロー関数という短い書き方で、PHP 7.4から使えます(PHPマニュアル:アロー関数)。

どのループを使えばよいか

PHPで配列を全部順番に処理するなら foreach、回数や番号を自分で管理したいなら for、条件しだいで続けるなら while を使います。

やりたいこと 向いている書き方
配列の要素を順番に全部使う foreach
キーと値の両方を使う foreach ($list as $key => $value)
決まった回数だけ繰り返す・何回目かを数えたい for
条件を満たす間だけ繰り返す while
各要素を加工した新しい配列がほしい array_map
配列を1つの文字列につなげたい implode

迷ったら foreach から書き始めて、足りないときに他の書き方を検討する、で困ることはほとんどありません。

株式会社bundlyzeでは、業務システムを要件定義から開発・保守運用まで一貫して手がけています。配列やループのような基本の積み重ねで動く業務システムを、どう進めて作るかは業務システム開発のページで紹介しています。

出典

下の6つは、どれも 2026-10-03 に内容を確認しました。

よくある質問

PHPの配列ループはforとforeachのどちらを使えばいい?

配列の要素を順番に使うだけなら foreach がおすすめです。count() で数えたり番号を増やしたりする必要がなく、キーが0から並んでいない配列や連想配列でもそのまま回せます。

ループの途中で抜けるには?

break を使います。その回だけ飛ばして次に進みたいときは continue です。

配列の中身を1行で表示するには?

implode('区切り文字', $配列) で1つの文字列につなげて echo します。中身を確認したいだけなら print_r($list) や var_dump($list) も使えます。

foreachの中で配列の値を書き換えるには?

foreach ($list as &$value) のように & を付けて参照で受け取ります。ループの後は必ず unset($value) で参照を切ってください。切り忘れると、後のループで最後の要素が上書きされることがあります。

連想配列をループするには?

foreach ($user as $key => $value) と書くと、項目名(キー)と値を1組ずつ取り出せます。データベースから取り出した一覧のような「連想配列の配列」は、ループの中で $user['name'] のように項目名を指定して取り出します。

この記事の書き方と確認の方針