• ベストアンサー

phpの変数宣言の仕方

php初心者です。 以下のように書きたいのですが出来なくて困っています。 他の関数からも$hogeを参照したいので関数testの中で宣言はしたくないです。 $hoge = 'ほげほげ'; function test() { echo $hoge; } test(); いちいちこうしないとダメなんでしょうか? $hoge = 'ほげほげ'; function test($hoge02) { echo $hoge02; } test($hoge); スマートな書き方を教えてください。 よろしくお願いしますm(_ _)m

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

  • ベストアンサー
  • sholmes
  • ベストアンサー率81% (89/109)
回答No.1

<回答> これがスマートであるかはわかりませんが、引数で渡す以外に次のような方法があるみたいです。 ・「グローバル変数群が詰まった、スーパーグローバルなハッシュ」から参照 ・globalキーワードの使用 これを使って書いた見た限りはこんな感じです。 http://ideone.com/W84ap <おまけ> ただし、どの言語を使うにせよ、変数のスコープを極力狭める方向で慣れておいた方がいいんでは・・・と個人的には思います。

参考URL:
http://php.net/manual/ja/language.variables.scope.php
from-kyoto
質問者

お礼

ありがとうございました。勉強になりました。(アホな質問ですみません…)

その他の回答 (3)

  • shiren2
  • ベストアンサー率47% (139/295)
回答No.4

globalですねぇ…。 function test(){ global $hoge; echo $hoge; } それか、まるごと関数にしてしまうとか。 function hoge(){ echo "ほげほげ"; } function test(){ hoge(); } test();

from-kyoto
質問者

お礼

ありがとうございました。こんな単純なことでつまずいた自分が恥ずかしい…

回答No.3

質問者はモジュール強度について学んだ方が良い。

from-kyoto
質問者

お礼

ありがとうございます、勉強します。

回答No.2

関数内からグローバル変数を読み書きする方法は2つあります。 関数内で global $変数名 とする方法と、$GLOBALS['変数名'] とする方法の2つです。 例えば、 $foo = 'foo'; $bar = 'bar'; test(); function test() { global $foo; echo $foo; echo $GLOBALS['bar']; } とすることで、希望通りグローバル変数 $foo, $bar の値が出力され、"foobar"が出力されます。

from-kyoto
質問者

お礼

ありがとうございました。

専門家に質問してみよう