• ベストアンサー

どうしたら、埼玉とスマートに表示できますか?

$AREAS["saitama"] = "埼玉"; $_POST["KEN"] = "saitama"; としておくと、次は、正しく表示されますが、 print $AREAS{$_POST[KEN]}."のページ"; 次は、エラーとなり、 print <<< END_OF_HTML $AREAS[$_POST[KEN]]のページへ END_OF_HTML; 次は、キーのsaitamaが表示されてしまいます。 print <<< END_OF_HTML $AREAS{$_POST[KEN]}のページへ END_OF_HTML; どうしたら、埼玉とスマートに表示できますか? また、{}は、どういう時に使うのでしょう???

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

  • ベストアンサー
noname#7734
noname#7734
回答No.2

{$AREAS[$_POST[KEN]]} だったら大丈夫です。惜しかったですね。 変数で使う{}は、表現の曖昧さを無くすために使います。 曖昧でないなら、有っても無くても同じです。 例)たとえば、$ab のあとに "c" を表示するときに、 "${ab}c"とします。"{$ab}c"でも同じです。 (個人的にはこういう書き方は使いません。$ab . "c" とかします) $AREAS{$_POST[KEN]} は、$AREAS と $_POST[KEN] が分かれて評価されることになります。 なぜ、$AREAS[$_POST[KEN]]がエラーになるかは、 マニュアルで該当する記述を見つけられなかったので 回答に自信がありませんが、 文字列内では、[] のネストが使えないようです。 print "$AREAS[$_POST[KEN]]"もダメです。 (PHP4.3.5で確認)

goonejp
質問者

お礼

ありがとう御座います。 PHPのパースは、速さを早くするために、[]のネストを処理するルーチンを簡略化して、{}で囲った場合のみ、ネストをパースするようになっているのですね…。 小さなことですが、大変、勉強になりました。 PHPのクセを知ることの出来るトリビアでした。

その他の回答 (1)

回答No.1

{$AREAS[$_POST["KEN"]]}のページへ かな。

goonejp
質問者

お礼

ありがとう御座います。 PHPの初心者は、このあたりでつまづきます。 助かりました。

関連するQ&A

専門家に質問してみよう