連想配列を含むヒアドキュメントの書き方を教えてください。
以下のコードならうまく行きました。
-(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)の何が悪いのか、どうすればうまく行くのかを教えてください
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
もしくは
<?PHP
$html_txt = <<<EOT
($_SERVER[PHP_SELF])
EOT;
echo $html_txt;
備考: http://qiita.com/mpyw/items/8dd5378cb01c877e1f7b
おお。これでもいいんですね。
最初見たときは、「それじゃダメなんじゃないの?」と思ったのですが、試してみたらうまくいきました。
もしかしたらこれを見て戸惑う人もいるかもしれないので、あまり使用しないほうがいいのかもしれませんけど。
ありがとうございました
No.2
- 回答日時:
PHPはマニュアルがよくできているので、マニュアルを読む習慣を付けるといいです。
http://www.php.net/manual/ja/language.types.stri …
ここに、
// 動作します。クォートしたキーを使う場合は、波括弧構文を使わなければなりません
と書いてあります。
>PHPはマニュアルがよくできているので、
>マニュアルを読む習慣を付けるといいです。
…。はい。まさにおっしゃるとおりです。
しかも私はそのページを見た上で質問をしました。
私が見たのはそのページの以下の4項目で
・引用符
・二重引用符
・ヒアドキュメント構文
・nowdoc 構文
それより下はサンプルコードが無駄に多いなと思いざっとしかみませんでした。
もう少し下も読めばよかったのですね…。
残念でした…。
ありがとうございました
No.1
- 回答日時:
こうじゃない?
<?PHP
$html_txt = <<<EOT
({$_SERVER['PHP_SELF']})
EOT;
echo $html_txt;
この回答への補足
この3パターンはうまくいって
(a) ({$_SERVER['PHP_SELF']})
(b) ({$SS})
(c) ($SS)
これだけうまくいきませんでした。
(d) ($_SERVER['PHP_SELF'])
逆に何で(c)はいいの?
(c)はいいのになぜ(d)はダメなの?
という疑問が発生しました。
「{}」なしは省略形で、クォーテーションの無い単純な変数だけ省略できるという感じですかね。(自分で書いてて、この理由な気がしてきましたが…)
もしよろしければこの点についても教えてください。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- PHP php エラー 2 2022/10/23 16:43
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- PHP php ログイン 1 2022/11/01 00:24
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- PHP ECCUBE4のページ管理でPHPを実行させたい 1 2023/04/06 11:42
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
centos6のlogにscript not foun...
-
htmlの書き換え
-
Dreamweaver MX の講習会を探し...
-
「旭日中綬賞 」とはどんな賞で...
-
携帯で携帯サイトを閲覧すると...
-
携帯でhtmlが見えない
-
連想配列を含むヒアドキュメン...
-
PHPのif文でその処理を途中で抜...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
【file_exists】ファイルが存在...
-
バッチを用いたフォルダの自動移動
-
現在位置より2つ上のディレク...
-
$_SESSION 有効期限をブラウザ...
-
.phpと.incファイルの違いはな...
-
stat failed
-
Switch文における、returnとbre...
-
FTPコマンドでディレクトリごと...
-
PHPにて外部サイト内容が取得不...
-
【PHP】画像が表示されず「×」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
centos6のlogにscript not foun...
-
正規表現を使い、URLで条件分岐...
-
「旭日中綬賞 」とはどんな賞で...
-
inet コントロールを用いてHTML...
-
htmlの書き換え
-
階層が違う場合の絶対パス相対...
-
文字化けで混乱中です...
-
厚い本を開きっぱなしにしてお...
-
数値から文字列へ変換後の先頭...
-
九州各地の美味しいものをお取...
-
これを作成するにはPHP?CGI...
-
PHPで作るフレーム、どんな風に...
-
ASPソースコードをPHPソースコ...
-
htmlをphpにするにあたってデメ...
-
phpの階層が変わると上手く読み...
-
php セレクトボックス 分岐 ...
-
拡張子htmlでphpが動作するフォ...
-
mod_rewriteでQUERYパラメータ...
-
青森県産のカルヴァドス
-
PHPの includeについて?
おすすめ情報