PHP入門 | 制御構文 | whileとdo while文
続いて「繰り返し」を行う構文を見ていこう。繰り返しとは、同じような処理を何度も実行する構文である。繰り返し文にもいくつか種類があるが、もっともわかりやすいのはwhileを使った構文だろう。
1. 最初に条件を確認する。
while (条件) {
...... 繰り返し処理 ......
}
中括弧の代わりにコロン(:)とendwhileを使うこともできる。
while (条件):
...... 繰り返し処理 ......
endwhile;
2. 最後に条件を確認する。
do {
...... 繰り返し処理 ......
} while (条件);
この構文には、条件を確認してから繰り返す方法と、繰り返し部分を実行した後で条件を確認する方法の2種類が用意されている。条件にはifと同じく、論理値(trueまたはfalse)で表される式や値を設定する。
一般的には「最初に確認する」方法を使うことが多い。後で確認する方式は、最初から条件がfalseの場合でも繰り返し部分を実行してしまうため、やや特別な場合に限って使われる。
簡単な例を見てみよう。
<?php
$num = 1;
$total = 0;
while($num <= 100){
$total += $num;
$num++;
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<title>sample page</title>
</head>
<body>
<h1>Hello PHP!</h1>
<div>
<?php echo "合計: " . $total; ?>
</div>
</body>
</html>
この例では、1から100までの整数をすべて足した結果を表示している。ここではwhile ($num <= 100)のように条件を設定し、$numの値が100以下である間は繰り返しを続けるようにしている。
代入演算子
実行している処理は$total += $num;という計算である。これは「$totalに$numを加える」という意味だ。これは等号(=)のように左辺の変数へ値を代入する「代入演算子」である。主な記号は次のとおりである。
| 式 | 説明 |
|---|---|
| A += B | AにBを加え、その結果をAに代入する。 |
| A -= B | AからBを引き、その結果をAに代入する。 |
| A*= B | AにBを掛け、その結果をAに代入する。 |
| A /= B | AをBで割り、その結果をAに代入する。 |
| A %= B | AをBで割った余りをAに代入する。 |
この代入演算子は、通常の等号(=)による代入式をより書きやすくしたものだ。たとえば$total += $num;という式は、$total = $total + $num;と同じ意味である。比べてみると、$total += $num;のほうがすっきりしていてわかりやすい。
インクリメント演算子
また、ここでは$num++;を実行している。この++という記号は、値を1だけ増やす機能を持つ。これを「インクリメント演算子」と呼ぶ。
同じように、--という記号で表す「デクリメント演算子」もある。これは変数の値を1だけ減らす機能を持つ。
++と--は式の中に含めることもできる。今回の例なら、次のように書くこともできる。
$total += $num++;
こうすると、2行の処理を1つの文で済ませられる。
また、これらの演算子は変数の前にも後にも書ける。たとえば++$numや$num++のように記述する。この2つは動作が微妙に異なるので注意が必要である。
変数の前に演算子を付けると、変数が式などで利用される場合、1を加算または減算した後の値が式で使われる。変数の後に演算子を付けると、まず現在の値が式で使われ、その後で1が加算または減算される。つまり、変数を使うタイミングと、1を増減させるタイミングが異なるのである。
とはいえ、実際に何度も使っていけば自然に覚えられる。まずは「こういう記号がある」ということだけ頭に入れておこう。