電子書籍の厳選無料作品が豊富!

php初心者です。
以下のように書きたいのですが出来なくて困っています。
他の関数からも$hogeを参照したいので関数testの中で宣言はしたくないです。

$hoge = 'ほげほげ';
function test() {
echo $hoge;
}
test();

いちいちこうしないとダメなんでしょうか?
$hoge = 'ほげほげ';
function test($hoge02) {
echo $hoge02;
}
test($hoge);

スマートな書き方を教えてください。
よろしくお願いしますm(_ _)m

A 回答 (4件)

<回答>


これがスマートであるかはわかりませんが、引数で渡す以外に次のような方法があるみたいです。

・「グローバル変数群が詰まった、スーパーグローバルなハッシュ」から参照
・globalキーワードの使用

これを使って書いた見た限りはこんな感じです。
http://ideone.com/W84ap

<おまけ>
ただし、どの言語を使うにせよ、変数のスコープを極力狭める方向で慣れておいた方がいいんでは・・・と個人的には思います。

参考URL:http://php.net/manual/ja/language.variables.scop …
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/08 14:38

globalですねぇ…。


function test(){
global $hoge;
echo $hoge;
}

それか、まるごと関数にしてしまうとか。
function hoge(){
echo "ほげほげ";
}

function test(){
hoge();
}

test();
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/08 14:45

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/08 14:40

関数内からグローバル変数を読み書きする方法は2つあります。


関数内で global $変数名 とする方法と、$GLOBALS['変数名'] とする方法の2つです。

例えば、

$foo = 'foo';
$bar = 'bar';
test();

function test()
{
global $foo;
echo $foo;

echo $GLOBALS['bar'];
}

とすることで、希望通りグローバル変数 $foo, $bar の値が出力され、"foobar"が出力されます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/05/08 14:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!