PHPの「配列」は、複数の関連データを一つの変数にまとめて管理できる、非常に便利な機能です。しかし、配列に格納した10個や100個のデータをすべて処理したい場合、echo $array[0];
, echo $array[1];
… のように一つずつ書き出すのは現実的ではありません。
そんな時に絶大な効果を発揮するのが、**配列専用の繰り返し構文「foreach
」**です。
foreach
を使えば、配列の中身を先頭から末尾まで自動的に、そして安全に処理することができます。今回は、このforeach
文の基本的な使い方を、初心者の方にも分かりやすく解説します。
foreach
とは? 〜配列の要素を一つずつ取り出す専門家〜
foreach
文は、その名の通り「each(それぞれ)」の要素に対して処理を行う、配列のためだけに用意された特別なループ構文です。
配列という箱に入っている品物を、ベルトコンベアに乗せて一つずつ順番に処理していくイメージです。foreach
は配列の要素数を自動で把握してくれるので、開発者は「何回ループさせるか」を気にする必要がありません。
1. foreach
の基本構文(キーと値を取得)
まずは、連想配列の「キー」と「値」を両方とも取り出す、最も基本となる書き方です。
【基本構文】
foreach (配列変数 as $key_variable => $value_variable) {
// 各要素に対する処理
}
配列変数
: ループさせたい配列を指定します。$key_variable
: 各要素のキーが、ループのたびに一時的に格納される変数です。$value_variable
: 各要素の値が、ループのたびに一時的に格納される変数です。
変数名 ($key_variable
, $value_variable
) は自分で自由に決めることができます。
サンプルコード
ユーザープロフィールの連想配列をforeach
で処理してみましょう。
<?php
// ユーザープロフィールの連想配列
$user_profile = [
"name" => "Taro Yamada",
"age" => 30,
"city" => "Tokyo"
];
// foreachを使ってキーと値を順番に出力
foreach ($user_profile as $key => $value) {
echo "{$key}: {$value}<br>";
}
実行結果:
name: Taro Yamada
age: 30
city: Tokyo
このように、配列の各要素がキーと値のペアで順番に取り出され、処理されているのが分かりますね。
2. 値だけを取得する(キーの省略)
連想配列のキーや、インデックス配列の添字(0, 1, 2…)が必要なく、値だけを使いたい場面も多くあります。その場合は、$key =>
の部分を省略して、よりシンプルに書くことができます。
【キーを省略した構文】
foreach (配列変数 as $value_variable) {
// 各要素に対する処理
}
サンプルコード
プログラミング言語のリスト(インデックス配列)から、値だけを順番に取り出して表示してみましょう。
<?php
$languages = ["PHP", "JavaScript", "Python", "Ruby"];
foreach ($languages as $lang) {
echo $lang . "<br>";
}
実行結果:
PHP
JavaScript
Python
Ruby
キーが必要ない分、コードがスッキリして読みやすくなりました。
foreach
とHTMLの連携
foreach
は、配列のデータをもとに動的にHTMLを生成する際にも非常に役立ちます。例えば、配列に格納された商品リストを、HTMLの箇条書きリスト<ul>
と<li>
で表示してみましょう。
<?php
$items = ["ノートPC", "キーボード", "マウス", "Webカメラ"];
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>商品リスト</title>
</head>
<body>
<h1>取り扱い商品</h1>
<ul>
<?php foreach ($items as $item): ?>
<li><?php echo htmlspecialchars($item, ENT_QUOTES, 'UTF-8'); ?></li>
<?php endforeach; ?>
</ul>
</body>
</html>
このコードは、$items
配列の要素数だけ<li>
タグを自動的に生成してくれます。商品の数が増えたり減ったりしても、PHPコードを修正する必要はありません。
まとめ
今回は、配列を扱う上で欠かせないforeach
ループについて学びました。
【ポイントの振り返り】
- **
foreach
**は、配列の要素を順番に処理するための専用ループ構文。 as $key => $value
でキーと値の両方を取得できる。as $value
で値だけをシンプルに取得できる。- 配列の要素数を気にせず安全に使えるため、配列のループ処理には
foreach
を使うのが基本。
for
文でも配列のループは可能ですが、要素数を間違えるとエラーの原因になります。foreach
を使いこなして、安全で効率的な配列操作をマスターしましょう。