PHPの繰り返し処理とは?基本の概要と役割
繰り返し処理は、プログラムの中で同じ処理を何度も繰り返したい時に使います。例えば「1から10まで数字を順に表示したい」「配列の中身を順に処理したい」といった時に便利です。
なぜ繰り返し処理が必要か?
手作業で何度も同じコードを書くのは非効率でミスも増えます。繰り返し処理を使えば、1つのコードで何回も繰り返せるため簡潔かつ保守性の高いプログラムになります。
PHPで使える代表的な繰り返し文の種類(for、while、foreach)
1. for文
決まった回数だけ繰り返し処理をしたい時に使います。このコードは、1から5まで順に数字を表示します。「$i = 1」から始まり、「$i <= 5」の間繰り返し、「$i++」で1ずつ増えます。
for ($i = 1; $i <= 5; $i++) {
echo "現在のカウントは{$i}です。<br>";
}
→ この例では1〜5まで表示します。
2. while文
条件が「真(true)」の間、繰り返し処理を続けます。このコードは「$iが5以下」の間ループし、1から5までの数字を表示します。条件を満たさなくなるとループが終了します。
$i = 1;
while ($i <= 5) {
echo "whileループのカウント:{$i}<br>";
$i++;
}
// whileループのカウント:1
// whileループのカウント:2
// whileループのカウント:3
// whileループのカウント:4
// whileループのカウント:5
3. foreach文
配列の中の要素を順番に取り出して処理したい時に使います。このコードは配列の中身「赤」「青」「緑」を順番に取り出して、それぞれ表示します。
$colors = ["赤", "青", "緑"];
foreach ($colors as $color) {
echo "色は{$color}です。<br>";
}
// 色は赤です。
// 色は青です。
// 色は緑です。
for文の使い方と具体例:基本から応用まで
基本例
for ($i = 0; $i < 3; $i++) {
echo "ループ番号: $i<br>";
}
// ループ番号: 0
// ループ番号: 1
// ループ番号: 2
応用例:九九の表を作る
for ($i = 1; $i <= 9; $i++) {
for ($j = 1; $j <= 9; $j++) {
echo "{$i} × {$j} = " . ($i * $j) . " ";
}
echo "<br>";
}
// 1 × 1 = 1 1 × 2 = 2 1 × 3 = 3 1 × 4 = 4 1 × 5 = 5 1 × 6 = 6 1 × 7 = 7 1 × 8 = 8 1 × 9 = 9
// 2 × 1 = 2 2 × 2 = 4 2 × 3 = 6 2 × 4 = 8 2 × 5 = 10 2 × 6 = 12 2 × 7 = 14 2 × 8 = 16 2 × 9 = 18
// 3 × 1 = 3 3 × 2 = 6 3 × 3 = 9 3 × 4 = 12 3 × 5 = 15 3 × 6 = 18 3 × 7 = 21 3 × 8 = 24 3 × 9 = 27
// 4 × 1 = 4 4 × 2 = 8 4 × 3 = 12 4 × 4 = 16 4 × 5 = 20 4 × 6 = 24 4 × 7 = 28 4 × 8 = 32 4 × 9 = 36
// 5 × 1 = 5 5 × 2 = 10 5 × 3 = 15 5 × 4 = 20 5 × 5 = 25 5 × 6 = 30 5 × 7 = 35 5 × 8 = 40 5 × 9 = 45
// 6 × 1 = 6 6 × 2 = 12 6 × 3 = 18 6 × 4 = 24 6 × 5 = 30 6 × 6 = 36 6 × 7 = 42 6 × 8 = 48 6 × 9 = 54
// 7 × 1 = 7 7 × 2 = 14 7 × 3 = 21 7 × 4 = 28 7 × 5 = 35 7 × 6 = 42 7 × 7 = 49 7 × 8 = 56 7 × 9 = 63
// 8 × 1 = 8 8 × 2 = 16 8 × 3 = 24 8 × 4 = 32 8 × 5 = 40 8 × 6 = 48 8 × 7 = 56 8 × 8 = 64 8 × 9 = 72
// 9 × 1 = 9 9 × 2 = 18 9 × 3 = 27 9 × 4 = 36 9 × 5 = 45 9 × 6 = 54 9 × 7 = 63 9 × 8 = 72 9 × 9 = 81
- 二重のfor文を使って、1〜9の掛け算を全て表示しています。
$i
と$j
の2つの変数を使い、外側と内側で処理を分けています。
while文とdo-while文の違いと使い分け方
while文の例
$i = 1;
while ($i <= 5) {
echo "while文のカウント: $i<br>";
$i++;
}
// while文のカウント: 1
// while文のカウント: 2
// while文のカウント: 3
// while文のカウント: 4
// while文のカウント: 5
- 条件を満たす間だけ繰り返します。
- 条件判定は繰り返しの前に行われるため、条件が最初からfalseなら処理は一度も実行されません。
do-while文の例
$i = 1;
do {
echo "do-while文のカウント: $i<br>";
$i++;
} while ($i <= 5);
// do-while文のカウント: 1
// do-while文のカウント: 2
// do-while文のカウント: 3
// do-while文のカウント: 4
// do-while文のカウント: 5
- 最低1回は必ず処理が実行されます。
- 条件判定は繰り返しの後に行われます。
配列と繰り返し処理:foreach文の使い方と活用例
配列の基本処理
配列 $fruits
の中にある「りんご」「バナナ」「みかん」を順番に取り出して、それぞれ「フルーツ: りんご」などと表示します。ポイントは、foreach
文で配列の要素を1つずつ順番に処理できることです。これを使うと、たくさんのデータを簡単に扱えます。
$fruits = ["りんご", "バナナ", "みかん"];
foreach ($fruits as $fruit) {
echo "フルーツ: $fruit<br>";
}
// フルーツ: りんご
// フルーツ: バナナ
// フルーツ: みかん
連想配列の処理
想配列は、「キー(名前)」と「値(中身)」をセットで管理する配列です。このコードは、連想配列 $user
の「キー」と「値」を1つずつ取り出して表示します。例えば、「名前 は 山田太郎 です。」のように出力されます。ポイントは、foreach
の書き方で「キー」と「値」の両方を扱えるところです。
連想配列は「名前」や「年齢」など、意味のあるラベルでデータを管理したい時に便利です。
$user = [
"名前" => "山田太郎",
"年齢" => 28,
"職業" => "エンジニア"
];
foreach ($user as $key => $value) {
echo "$key は $value です。<br>";
}
// 名前 は 山田太郎 です。
// 年齢 は 28 です。
// 職業 は エンジニア です。
多次元配列の例
多次元配列は、配列の中にさらに配列が入っている構造です。
例えば、複数のユーザー情報をまとめて管理するときに使います。このコードは、$users
の中にある複数の連想配列を順番に処理し、それぞれの「名前」と「年齢」を表示します。
多次元配列を使うと、関連する複数の情報をまとめて管理できることです。そして foreach
で1つずつ取り出して、中の要素をアクセスしています。
$users = [
["名前" => "佐藤", "年齢" => 25],
["名前" => "鈴木", "年齢" => 30],
["名前" => "高橋", "年齢" => 22],
];
foreach ($users as $user) {
echo "名前:" . $user["名前"] . "、年齢:" . $user["年齢"] . "<br>";
}
// 名前:佐藤、年齢:25
// 名前:鈴木、年齢:30
// 名前:高橋、年齢:22
繰り返し処理の注意点と効率的な書き方のコツ
- 無限ループに注意
変数の更新を忘れると永遠にループし続けてしまいます。必ず条件を変化させるコードを書くことが必須です。 - 処理を軽くする
ループ内で重い処理を繰り返すと動作が遅くなるため、可能ならループ外に処理を出す工夫をしましょう。 - 配列の大きさを考慮
大きな配列をforeachで回すと時間がかかるので、必要に応じて配列のサイズを制限したり、途中で抜ける処理を入れます。 - コードを読みやすくする
変数名は意味のある名前にし、ネストを深くしすぎないようにしましょう。
PHPの繰り返し処理でよくあるエラーとその対処法
1. 無限ループ
$i = 0;
while ($i < 5) {
echo $i;
// $i++がないので無限ループになる
}
→ while
内で $i++
のような変数更新を必ず入れましょう。
2. 未定義の配列キーアクセス
$colors = ["赤", "青"];
echo $colors[2]; // 存在しないキーにアクセス
→ 配列のキー存在確認をする
if (isset($colors[2])) {
echo $colors[2];
} else {
echo "色はありません";
}
3. 文法エラー(例:セミコロン忘れ)
for ($i = 0; $i < 5; $i++) {
echo $i // セミコロンが抜けている
}
→ セミコロン ;
を忘れずに。エラーメッセージを読みましょう。
4. 型の不一致によるエラー
$i = "5";
if ($i < 10) { // PHPは自動的に型変換するが、複雑な計算では注意が必要
echo "10未満です";
}
→ 文字列と数値の比較では、明示的に型変換をするとより安全です。
$i = (int)$i;