?が示す意味
terniary 条件文という式がありますが、 他の言語で見たことがない場合には理解できないかもしれません。
$first ? $second : $third
最初の部分式の値が TRUE (非ゼロ)の場合、二番目の部分式が評価され、 この条件文の結果となります。
そうでない場合、三番目の部分式が評価され、この文の値となります。
次の例は、前置および後置加算子と多少一般的な式の理解を 助けてくれることでしょう。
function double($i) {
return $i*2;
}
$b = $a = 5; /* 値 5 を %a と $b に代入します */
$c = $a++; /* 後置加算なので、$c に代入される値は、$a の
元の値 (5) です */
$e = $d = ++$b; /* 前置加算なので、$d と 4e に代入される値は、
加算後の $b の値 (6) です */
/* ここままで、$d と $e は、6 です */
$f = double($d++); /* $f には、$d
が加算される<emphasis>前</emphasis>の値を2倍した値、
つまり 2*6 = 12 が、代入されます。
$g = double(++$e); /* $g には、$e
が加算された<emphasis>後</emphasis>の値を2倍した値、
つまり 2*7 = 14 が、代入されます。
$h = $g += 10; /* まず、$g に 10 が加算され、24 になります。代入値 (24) は、
$h に代入されます。そして、$a も同様に 24 になります。 */