※ ChatGPTを利用し、要約された質問です(原文:連想配列を含むヒアドキュメントの書き方)
連想配列を含むヒアドキュメントの書き方
このQ&Aのポイント
連想配列を含むヒアドキュメントの書き方について教えてください。新たな変数を使用せずにコードを実行したい場合、エラーが発生してしまいます。
PHPでは、(2)のようなヒアドキュメント内で直接連想配列を参照することはできません。エスケープや引用符の変更などの対応策もうまくいきません。
一方、(1)のように一時的な変数を使用して連想配列を含むヒアドキュメントを作成する方法は有効です。エラーのリスクを回避しながらコードを実行することができます。
連想配列を含むヒアドキュメントの書き方を教えてください。
以下のコードならうまく行きました。
-(1)--------------------------
$SS = $_SERVER['PHP_SELF'];
$html_txt = <<<EOT
($SS)
EOT;
echo $html_txt;
------------------------------
これを一時的な変数を使わずに以下のようなコードで実行したいです。
-(2)--------------------------
$html_txt = <<<EOT
($_SERVER['PHP_SELF'])
EOT;
echo $html_txt;
------------------------------
これを実行すると
# Parse error: syntax error, unexpected '"',
# expecting T_STRING or T_VARIABLE or T_NUM_STRING in …
というエラーが出てしまいます。
最悪、(1)でもいいと思っています。しかし(2)のようなケースでもできてもいいのではないかと思うのですが、エスケープを入れたり「$_SERVER["PHP_SELF"]」などとクォーテーションを変更したりしてもうまく行きません。
質問は以下です
・(2)のような記述はPHPでは不可能なのでしょうか?
・もし可能なら(1)の何が悪いのか、どうすればうまく行くのかを教えてください
よろしくお願いします。
お礼
おお。これでもいいんですね。 最初見たときは、「それじゃダメなんじゃないの?」と思ったのですが、試してみたらうまくいきました。 もしかしたらこれを見て戸惑う人もいるかもしれないので、あまり使用しないほうがいいのかもしれませんけど。 ありがとうございました