サンプル・プログラムの実行例
PHPにはC言語と同じインクリメント演算子とデクリメント演算子がある。これらを使うとプログラムを短くすることができるが、その位置によって効果が異なることに留意したい。
インクリメント演算子とデクリメント演算子
PHPのインクリメント演算子「++」は、変数に1を加算して代入するという作用を有する。たとえば $i++ は $i = 4 + 1 と同じ作用となる。
デクリメント演算子「--」は、変数に1を減算して代入するというものである。
これらは、ループ・カウンタでよく使われる。
デクリメント演算子「--」は、変数に1を減算して代入するというものである。
これらは、ループ・カウンタでよく使われる。
サンプル・プログラム
後置と前置
インクリメント演算子は、変数の後に書く後置 $i++ と、前に書く前置 ++$i の2種類の配置がある。デクリメント演算子も同様である。
前置と後置によって作用が異なることに留意したい。
前置と後置によって作用が異なることに留意したい。
2: $i = 1;
3: echo $i . '<br />';
4: echo $i++ . '<br />';
5: echo $i . '<br />';
6: echo ++$i . '<br />';
7: echo $i . '<br />';
このコードを実行すると下記のようになる。
1つまり、後置 $i++ のときはインクリメントより先に echo が実行される。前置 ++$i のときはインクリメントが先に実行され次に echo が実行される。
1
2
3
3
ループカウンタ
インクリメント演算子/デクリメント演算子をループ条件に書くとプログラムを短くすることができるが、後置と前置の違いに注意しなければならない。
2: $i = 0;
3: while ($i++ <= 10) {
4: echo $i . '<br />';
5: }
6: echo '----<br />';
7: $i = 0;
8: while (++$i <= 10) {
9: echo $i . '<br />';
10: }
このコードを実行すると下記のようになる。
前置の場合は、ループ条件式が評価される前にインクリメントされるので10まで繰り返される。
1後置の場合は、ループ条件式が評価された後にインクリメントされるので11まで繰り返される。
2
3
4
5
6
7
8
9
10
11
--
1
2
3
4
5
6
7
8
9
10
前置の場合は、ループ条件式が評価される前にインクリメントされるので10まで繰り返される。
もっと複雑なループ処理になると、後置/前置の違いがバグの原因になりかねない。
そこで、下のソースのように条件式の外でインクリメント/デクリメントすることをお勧めする。
そこで、下のソースのように条件式の外でインクリメント/デクリメントすることをお勧めする。
2: $i = 1;
3: while ($i <= 11) {
4: echo $i . '<br />';
5: $i++;
6: }
7: echo '----<br />';
8: $i = 1;
9: while ($i <= 10) {
10: echo $i . '<br />';
11: $i++;
12: }
13: ?>
(この項おわり)