• ベストアンサー

printの表示形式について質問です。

現在PHPを著書を利用して独学で習得中です。 余り詳しい説明のない著書のようで、 今一要領がつかめないのですが、 下記のようなプログラミングを行いました。 --<program_start>-- <?php class MyClass{ function __construct(){ print("オブジェクトが生成されました<br/>"); } function __destruct(){ print("オブジェクトが破棄されました<br/>"); } function calculate($a, $b){ print("$a + $b は ".$a+$b." です<br/>"); } } $objCls = new MyClass(); $objCls->calculate(2, 3); ?> --<program_end>-- その結果下記のように表示されました。 --<answer_start>-- オブジェクトが生成されました 5 です オブジェクトが破棄されました --<answer_end>-- 著書では結果の部分の計算表示が 2 + 3 は 5 です となっていますが同じように表示されません。 どこか誤っているのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

PHPでは変数の型がないため代数演算を行うと文字列が数として扱われます。 先頭が数字で始まる文字列はその数字が数値となり数字以外の文字で始まる場合は0として扱われます。 "2 + 3 は 2" という文字列は 2 と解釈され"2 + 3 は 2" + 3 は 2 + 3と解釈されその結果5となります。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

$a+$bをかっこでくくってください。 print "$a + $b は ".($a+$b)." です<br/>"; かっこがなければまえから順番に処理されます まず「"$a + $b は "」の部分は変数がおきかわるので 「2 + 3 は」になります。 それに.$aしてますから、文字列に数字を連結すると文字列ですので 「2 + 3 は 2」になります。 それに+$bすると文字列に数字をたすので数字になり「5」になります。 それに." です<br/>";をするので数字に文字列を連結しているので 「5 です<br/>」ってことです。 c= "$a + $b は "; print $c."<br>"; $c.=$a; print $c."<br>"; $c+=$b; print $c."<br>"; $c.=" です"; print $c; とするとわかるとおもいます。

関連するQ&A