- ベストアンサー
phpの変数宣言の仕方
php初心者です。 以下のように書きたいのですが出来なくて困っています。 他の関数からも$hogeを参照したいので関数testの中で宣言はしたくないです。 $hoge = 'ほげほげ'; function test() { echo $hoge; } test(); いちいちこうしないとダメなんでしょうか? $hoge = 'ほげほげ'; function test($hoge02) { echo $hoge02; } test($hoge); スマートな書き方を教えてください。 よろしくお願いしますm(_ _)m
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
<回答> これがスマートであるかはわかりませんが、引数で渡す以外に次のような方法があるみたいです。 ・「グローバル変数群が詰まった、スーパーグローバルなハッシュ」から参照 ・globalキーワードの使用 これを使って書いた見た限りはこんな感じです。 http://ideone.com/W84ap <おまけ> ただし、どの言語を使うにせよ、変数のスコープを極力狭める方向で慣れておいた方がいいんでは・・・と個人的には思います。
その他の回答 (3)
- shiren2
- ベストアンサー率47% (139/295)
globalですねぇ…。 function test(){ global $hoge; echo $hoge; } それか、まるごと関数にしてしまうとか。 function hoge(){ echo "ほげほげ"; } function test(){ hoge(); } test();
お礼
ありがとうございました。こんな単純なことでつまずいた自分が恥ずかしい…
- bakayarou_
- ベストアンサー率23% (32/136)
質問者はモジュール強度について学んだ方が良い。
お礼
ありがとうございます、勉強します。
- LonelyWolf
- ベストアンサー率70% (12/17)
関数内からグローバル変数を読み書きする方法は2つあります。 関数内で global $変数名 とする方法と、$GLOBALS['変数名'] とする方法の2つです。 例えば、 $foo = 'foo'; $bar = 'bar'; test(); function test() { global $foo; echo $foo; echo $GLOBALS['bar']; } とすることで、希望通りグローバル変数 $foo, $bar の値が出力され、"foobar"が出力されます。
お礼
ありがとうございました。
お礼
ありがとうございました。勉強になりました。(アホな質問ですみません…)