[PHP-users 9548] 関数でスーパーグローバル変数を可変変数で取得するには
Toshiyuki Kajii
php-users@php.gr.jp
Tue, 27 Aug 2002 20:45:28 +0900
梶井です。
関数内で可変変数によってスーパーグローバルな変数の値を取得する方法に
ついてよくわからずに悩んでいます。
#test1.php
echo $_GET["v"];
$hoe="_GET";
echo ${$hoe}["v"];
これを、「test1.php?v=hoe」としてやると、「hoehoe」と表示されます。
ここまでは問題ありません。ところが、
#test2.php
function hoge(){
echo $_GET["v"];
$hoe="_GET";
echo ${$hoe}["v"];
}
hoge();
これを、「test2.php?v=hoe」としてやると、「hoe」としか表示されません。
そこで、
#test2.php
function hoge(){
echo $_GET["v"];
$hoe="_GET";
global $$hoe;
echo ${$hoe}["v"];
}
hoge();
としてやると、「test3.php?v=hoe」で「hoehoe」と表示されます。
スーパーグローバルな変数であっても、可変変数で扱う場合にはglobal宣言
しないといけないのでしょうか。
この理由について、ご教示いただけるとありがたいです。
よろしくお願いします。
環境
Debian GNU/Linux sarge
Apache 1.3.26
PHP 4.2.2
*---------------------------------------------------*
Toshiyuki Kajii 梶井 俊幸
e-mail: mikoto@camino.nissan.ne.jp
*---------------------------------------------------*