尝试获取动态生成的会话变量的值。我将一个键数组传递给函数,但函数返回此字符串:
['key1']['key2']['key3']
而不是插值会话值。
代码:
// Sample $_SESSION superglobal
Array
(
[key1] => Array
(
[key2] => Array
(
[key3] => 'data to return'
)
)
)
// Function
public function session_data( $variables = array() )
{
// Set variables
$_dataArray = null;
$_dataArray = "['" . implode( "']['", $variables ) . "']";
// Return
return $_SESSION{$_dataArray};
}
// Call function
var str = session_data( array('key1', 'key2', 'key3') );
echo str; // Echoes ['key1']['key2']['key3'] instead of 'data to return'
我做错了什么?我认为$ _dataArray周围的花括号会生成以下内容,$ _SESSION ['key1'] ['key2'] ['key3'],插入并返回值(例如'要返回的数据')。
答案 0 :(得分:0)
您的$_dataArray
代没有任何意义。您要做的事情($_SESSION['key1']['key2']['key3']
)是一个简单的数组:
$array = [
'key1' => [
'key2' => [
'key3' => 'Your data'
]
]
];
$_SESSION = $array;
echo $_SESSION['key1']['key2']['key3'] . PHP_EOL; // Echoes 'Your data'
答案 1 :(得分:0)
你可以使用像这样的递归函数::
function loop_through($array){
foreach ($array as $key=> $val){
if (!is_array($val)) {
return $val;
} else {
return ( loop_through($val) );
}
}
}
echo loop_through($array); // echoes 'Your data'