PHP(7)动态会话数据检索
/* to set something like $_SESSION['key1']['key2']['key3']:
$session->setMd(array('key1', 'key2', 'key3'), 'value')
*/
public function setMd($keyArray, $val)
{
$arrStr = "['".implode("']['", $keyArray)."']";
$_SESSION{$arrStr} = $val;
}
这正是我需要的,但是当我试图用这种方式如下:
$this->path = ['a','bb','ccc']; $this->_sessionStorage{"['".implode("']['",$this->path)."']"} = 'dddd';
ddd($this->_sessionStorage);
我得到这样的输出:
array(1) { ["['a']['bb']['ccc']"]=>
string(4) "dddd"
}
这是假的还是我做错了什么?
回答:
不,这是php的预期行为。如果你想以这种方式访问数据,你应该使用一个循环。像这样的东西可以为你工作。
function setMd($keyArray, $value) { $data = &$_SESSION;
foreach ($keyArray as $key) {
$data = &$data[$key];
}
$data = $value;
}
以上是 PHP(7)动态会话数据检索 的全部内容, 来源链接: utcz.com/qa/262333.html