文字列連結での面白かった動作
ちょろちょろとバイト先でPHPのコードをいじっているときに見つけたおもしろい動作。
下のようなテストプログラムを用意したときの話です。
<?php> $a = 456; $b = 345; echo "a - bは" . $a -$b . "です"
これを実行したときに表示してもらいたい文字列は
a - bは111です
なのですが、実際は
-345です
・・・なにこれw
上の用に動作させたければechoの部分で
<?php> $a = 456; $b = 345; echo "a - bは" . ($a -$b) . "です"
とする必要があるみたい。
どういう動作が行われているのかを考えてみた。
多分前から順々に動作していく事のせいだろうな。
- "a - b" . $a が解釈される。
- - $bが解釈される。
- - $b . "です"が解釈される。
- 結果後ろの部分だけechoされて -111です
となるのでしょうかねぇw