PHP - 加算子・減算子

加算子・減算子

PHP は加算子・減算子(前置・後置ともに)をサポートします。加算子・減算子は、数値や文字列にしか影響を及ぼしません。配列、オブジェクト、boolean、リソースには何も変更を加えません。ただし、NULL に減算子を適用しても何も起こりませんが、NULL に加算子を適用すると 1 になります。

++$a (前置加算子)
$a に 1 を加え、$a を返します。
$a++ (後置加算子)
$a を返し、$a に 1 を加えます。
--$a (前置減算子)
$a に 1 を引き、$a を返します。
$a-- (後置減算子)
$a を返し、$a に 1 を引きます。
<?php
  /* 後置加算子 */
  $a = 5;
  echo $a++; // 5
  echo $a;   // 6
   
  /* 前置加算子 */
  $a = 5;
  echo ++$a; // 6
  echo $a;   // 6

  /* 後置減算子 */
  $a = 5;
  echo $a--; // 5
  echo $a;   // 4
   
  /* 前置減算子 */
  $a = 5;
  echo --$a; // 4
  echo $a;   // 4
?>
加算子・減算子

PHP では、算術演算子で文字変数を扱った場合、例えば $a = 'Z'; $a++; の結果として $a'AA' になります。また、文字変数はインクリメントは可能ですがデクリメントは不可能です。そしてプレーンな ASCII 文字と数字 (a-z、A-Z、0-9) のみがサポートされる点に注意しましょう。その他の文字変数のインクリメント・デクリメントは何の効果もなく、元の文字列は変更されません。

<?php
  /* Alphabets */
  $s = 'W';
  for ($n = 0; $n < 6; $n++) {
      echo ++$s; // X Y Z AA AB AC
  }
  
  /* Digits */
  $d = 'A8';
  for ($n = 0; $n < 6; $n++) {
      echo ++$d; // A9 B0 B1 B2 B3 B4
  }
  
  $d = 'A08';
  for ($n = 0; $n < 6; $n++) {
      echo ++$d; // A09 A10 A11 A12 A13 A14
  }
?>
加算子・減算子

関連記事