PHP は C 言語形式の加算子/減算子(前置・後置ともに)をサポートします。
注意: 加算子/減算子は、数値や文字列にしか影響を及ぼしません。 配列やオブジェクトそしてリソースには、何も変更を加えません。 同じく
NULL
に減算子を適用しても何も起こりませんが、NULL
に加算子を 適用すると 1 となります。
例 | 名前 | 効果 |
---|---|---|
++$a | 前置加算子 | $a に 1 を加え、$a を返します。 |
$a++ | 後置加算子 | $a を返し、$a に1を加えます。 |
--$a | 前置減算子 | $a から 1 を引き、$a を返します。 |
$a-- | 後置減算子 | $a を返し、$a から 1 を引きます。 |
以下に簡単なスクリプトの例を示します。
<?php
echo "<h3>後置加算</h3>";
$a = 5;
echo "5 となります: " . $a++ . "<br>\n";
echo "6 となります: " . $a . "<br>\n";
echo "<h3>前置加算</h3>";
$a = 5;
echo "6 となります: " . ++$a . "<br>\n";
echo "6 となります: " . $a . "<br>\n";
echo "<h3>後置減算</h3>";
$a = 5;
echo "5 となります: " . $a-- . "<br>\n";
echo "4 となります: " . $a . "<br>\n";
echo "<h3>前置減算</h3>";
$a = 5;
echo "4 となります: " . --$a . "<br>\n";
echo "4 となります: " . $a . "<br>\n";
?>
PHP は、算術演算子で文字変数を扱った場合に C ではなく Perl の慣習に 従います。例えば、PHP や Perl では $a = 'Z'; $a++; の結果として $a が 'AA' になりますが C では a = 'Z'; a++; の結果として a は '[' になります ('Z' の ASCII 値は 90、そして '[' の ASCII 値は 91 です)。 文字変数はインクリメントされることは可能ですがデクリメントは不可能であるということ、 またプレーンな ASCII 文字と数字 (a-z、A-Z、そして 0-9) のみがサポートされるということに注意しましょう。 その他の文字変数のインクリメント/デクリメントは何の効果もなく、元の文字列は変更されません。
例1 文字変数に対する算術演算子の使用
<?php
echo '== Alphabets ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// 数字の挙動は異なります
echo '== Digits ==' . PHP_EOL;
$d = 'A8';
for ($n=0; $n<6; $n++) {
echo ++$d . PHP_EOL;
}
$d = 'A08';
for ($n=0; $n<6; $n++) {
echo ++$d . PHP_EOL;
}
?>
上の例の出力は以下となります。
== Characters == X Y Z AA AB AC == Digits == A9 B0 B1 B2 B3 B4 A09 A10 A11 A12 A13 A14
論理型に対する加算/減算は何の影響も及ぼしません。