PHPのインクリメント・デクリメント演算子の使い方を徹底解説
はじめに
PHPには、C言語スタイルのインクリメント演算子「++」とデクリメント演算子「--」が定義されています。名前の通り、インクリメント演算子「++」はオペランド(変数)の値を1増やし、デクリメント演算子「--」は1減らします。どちらもオペランドを1つしか必要としないため、単項演算子に分類されます。これらの演算子は、前置(prefix)または後置(postfix)の形式で使用でき、単独の式として使うことも、より複雑な式の中で他の演算子と組み合わせることも可能です。
構文
$x=5; $y=5; $x++; // 後置インクリメント $y--; // 後置デクリメント ++$y; // 前置インクリメント --$x; // 前置デクリメント
単独で使用する場合、後置と前置のインクリメント/デクリメント演算子は同じように動作します。つまり、$x++ でも ++$x でも $x の値は1増加し、$y-- でも --$y でも $y の値は1減少します。
次のコードは、後置・前置それぞれの形式におけるインクリメント/デクリメント演算子の動作を示したものです。
例
<?php $x=5; $y=5; $x++; // 後置インクリメント $y--; // 後置デクリメント echo "x = $x y = $y" . "\n"; ++$y; // 前置インクリメント --$x; // 前置デクリメント echo "x = $x y = $y" . "\n"; ?>
出力
次の結果が表示されます。
x = 6 y = 4 x = 5 y = 5
代入式での優先順位の違い
代入式の中で使用する場合、後置の「++」や「--」は代入演算子「=」よりも優先順位が低くなります。そのため、「$a=$x++」はまず「$a=$x」が実行され、その後に「$x++」が評価されます。一方、前置の「++」/「--」は「=」よりも優先順位が高いため、「$b=--$y」では先に「--$y」が実行され、その結果得られた $y の値が $b に代入されます。
この優先順位の違いは、実際のコードで結果が大きく変わるため、非常に重要なポイントです。
例
<?php $x=5; $y=5; $a=$x++; // 後置インクリメント echo "a = $a x = $x" . "\n"; $b=--$y; // 前置デクリメント echo "b = $b y = $y" . "\n"; ?>
出力
次の結果が表示されます。
a = 5 x = 6 b = 4 y = 4
文字列に対するインクリメント
PHPでは、ASCII文字を格納した変数に対してもインクリメント操作を行うことができます。英字をインクリメントすると、ASCIIセット内で次の文字に進みます。たとえば「A」なら「B」、「B」なら「C」という具合です。さらに、「Z」を超えるとASCIIセットが最初から繰り返され、値が「Z」の変数をインクリメントすると「AA」になります。なお、A-Z、a-z、0-9以外の非ASCII文字は、インクリメント演算子によって無視される点に注意してください。
例
<?php
$var='A';
for ($i=1; $i<=3; $i++){
echo ++$var . "\n";
}
$var1=1;
for ($i=1; $i<=3; $i++){
echo ++$var1 . "\n";
}
?>出力
次の結果が表示されます。
B C D 2 3 4
-
C#のインクリメント(++)とデクリメント(--)演算子とは?前置・後置の違いを解説
C#には、数値を1つ増やしたり減らしたりするための専用の演算子が用意されています。それがインクリメント演算子(++)とデクリメント演算子(--)です。それぞれ「前置」と「後置」の2種類があり、変数単体で使う場合は同じ動作をしますが、代入などと組み合わせると挙動が異なるため注意が必要です。 インクリメント演算子(++) インクリメント演算子は、変数の値を1つ増やすための演算子です。次の2つの書き方があります。 後置インクリメント(a++):現在の値を使った後に、値が1増えます。 前置インクリメント(++a):値が1増えた後に、その新しい値が使われます。 以下は、両者の違いを確認できるサンプ
-
C#のis演算子とas演算子の違いと使い方を徹底解説
C#には、オブジェクトの型を安全に扱うための便利な演算子として「is」と「as」が用意されています。この2つの演算子は似たような場面で使われますが、役割と動作は大きく異なります。本記事では、それぞれの演算子の特徴、構文、そして具体的なコード例を通じて、その違いをわかりやすく解説します。 is演算子とは 「is」演算子は、オブジェクトの実行時の型(ランタイム型)が指定した型と互換性があるかどうかを判定するために使用します。判定結果はブール値(true / false)として返されるため、if文などの条件分岐と組み合わせて使うのが一般的です。 構文 expr is type expr:判定対象とな