crossline

PHP ブラウザに出力

font-size:12px;line-height: 150%;

 

 

 

 

<?php

  $a = 3;

  $b = 6;

  $c = $a++;

  $d = ++$b;

  $e = $c + $d;

 

print ' 変数の値は '.$e.' です。 ' ;

 

この答えは、一見11に見えがちですが。。。

 

実際の答え↓

10!!!!!

 

 

 

(解説/ポイント)

これは、後置加算子、前置加算子によるものです。

f:id:ishuko:20140725021151p:plain

from PHP: 加算子/減算子 - Manual

 

 

上記の図からわかるように、

左側にくる++は、それだけで1足されていることがわかる。

一方右側にくる++は、「$aを返し、$aに1を加える」すなわち、

「ただの記号に過ぎない」という解釈が出来ます!!

 

これはfor文で使われるi++のようなもので、

計算式では成り立つが、それ自体が計算される、という機能は持っていないのです。

 

 

よって、

$c = $a++; は、 3

$d = ++$b; は、 7

 

$e = $c + $d;  は、 10となる訳です!!