配列へのパスを記述する文字列 ( など) を介して、多次元配列から項目を取得しようとしていますfirst.second.third
。
ここに示すようにアプローチを選択しました(ideone でも利用できます):
<?php
// The path into the array
$GET_VARIABLE = "a.b.c";
// Some example data
$GLOBALS["a"]= array("b"=>array("c"=>"foo"));
// Construct an accessor into the array
$variablePath = explode( ".", $GET_VARIABLE );
$accessor = implode( "' ][ '", $variablePath );
$variable = "\$GLOBALS[ '". $accessor . "' ]";
// Print the value for debugging purposes (this works fine)
echo $GLOBALS["a"]["b"]["c"] . "\n";
// Try to evaluate the accessor (this will fail)
echo $$variable;
?>
スクリプトを実行すると、次の 2 行が出力されます。
foo
PHP Notice: Undefined variable: $GLOBALS[ 'a' ][ 'b' ][ 'c' ] in ...
では、なぜこれは適切に評価されないのでしょうか?