質問: 下記のようにヒアドキュメントないでPOSTの値を受け取る場合ですが、 //errorのように直接これを受け取る場合、以下のようにphp上errorとされます。 もちろん波括弧でくくるという方法もあるのですが、マニュアル を読んでもどのような理由で生じるエラーなのかがわかりません。。 'parse error, expecting "identifier(T_STRING)" or "variable(T_VARIABLE)" or "number(T_NUM_STRING)"' なんとなくなのですが中括弧[]がparse errorの対象となっているように思えるのですが、 ヒアドキュメント上は特別な意味がありエスケープされるべき文字列等なのでしょうか? もしご存知の方がいれば教えてください。 よろしくお願い申し上げます。 ``` //works! $hoge EOM; ?> $_POST['piyo'] EOM; ?> {$_POST['piyo']} EOM; ?> ```
回答: そのエラー例ですとダブルクォーテーションも同じエラーとなります。 ``` $bar="$_POST['piyo']"; ``` []がどうというより、連想配列を文字列の中に含む際のルールと思ったら良いかなと。 単体の変数と違い「ここからここまでがPHPの変数である」と明示するために{}で囲います。 例えば英数字の途中で変数を入れる場合、文章の途中で入れる場合はどこからどこまでが変数かわからなくなりますし(特に英数字の場合は正しく変数を解釈できません)、 単体の変数であっても明示するために{}で囲う習慣をもっておいたほうがトラブルが減ると思います。