加算子/減算子

PHP は C 言語形式の加算子/減算子(前置・後置ともに)をサポートします。

注意: 加算子/減算子は bool 型の値には何も変更を加えません。 同じく NULL に減算子を適用しても何も起こりませんが、NULL に加算子を 適用すると 1 となります。

表 15-6. 加算子/減算子

名前効果
++$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 の慣習に 従います。例えば、perl では 'Z'+1 は 'AA' を返しますが C では 'Z'+1 は '[' ( ord('Z') == 90, ord('[') == 91 ) を返します。 文字変数はインクリメントされることは可能ですがデクリメントは不可能であるということ、 またプレーンな ASCII 文字 (a-z および A-Z) のみがサポートされるということに注意しましょう。

例 15-5. 文字変数に対する算術演算子の使用

<?php
$i
= 'W';
for (
$n=0; $n<6; $n++) {
    echo ++
$i . "\n";
}
?>

上の例の出力は以下となります。

X
Y
Z
AA
AB
AC

論理型に対する加算/減算は何の影響も及ぼしません。