関数に処理させたいスーパーグローバル配列の名前を含む変数を渡そうとしましたが、それを機能させることができませんでした。問題の変数が存在しないと主張し、nullを返します。
テストケースを次のコードに簡略化しました。
function accessSession ($sessName)
{
var_dump ($$sessName);
}
$sessName = '_SERVER';
var_dump ($$sessName);
accessSession ($sessName);
関数の外にあるvar_dumpは、期待どおりに$_SERVERの内容を返します。ただし、関数のvar_dumpは、上記のエラーをトリガーします。
関数に追加global $_SERVER
してもエラーは解消されませんでしたが、$ _ SERVERを別の変数に割り当て、その変数をグローバルにすることは機能しました(以下を参照)。
function accessSession ($sessName)
{
global $test;
var_dump ($$sessName);
}
$test = $_SERVER;
$sessName = 'test';
var_dump ($$sessName);
accessSession ($sessName);
これはPHPのバグですか、それとも私は何か間違ったことをしているだけですか?