IT技術ブログ

【PHP講座】配列と繰り返し処理(ループ処理)について

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つの文字列につなげたいときに向いています。

PHPはWeb開発において人気で強力な言語です。その中でも配列と繰り返し処理(ループ処理)は、PHPだけではなく、プログラミングの基礎として欠かせない要素です。配列は複数の値を一つの変数に格納するための構造であり、ループ処理はその配列の各要素に対して繰り返し操作を行うための方法です。

この講座では、PHPの配列とループ処理について紹介します。配列の基本的な使い方から、foreachやforなどのループ処理の例を紹介します。

この講座を通じて、PHPの配列と繰り返し処理を学び、開発の幅を広げていきましょう!

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

配列とループ処理

最初に配列とループ処理について、紹介します!
配列とループ処理は、他の言語も含めて、使用する場面がかなり多いため、
このセクションを通じて、基礎を学んでいきましょう!

配列の定義

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でループ処理を実行する方法は、下記になります。

1. forループを使う方法
2. whileループを使う方法
3. do...whileループを使う方法
4. array_map関数を使う方法
5. implode関数を使う方法(直接ループではないが一行で表示)

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月2日確認)。

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

画面に出す情報は、「名前」「年齢」のように項目名つきで持つことが多いです。この場合も 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)

  • 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月2日確認)。

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月2日確認)。

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から使えます。

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

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

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

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

よくある質問

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

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

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

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

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

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