PHP(7)动态会话数据检索

问题描述 投票:0回答:1

我读了关于会话包装的方法,有方法:

/*
    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 arrays
1个回答
0
投票

不,这是php的预期行为。如果要以这种方式访问​​数据,则应使用循环。这样的东西对你有用。

function setMd($keyArray, $value) {
    $data = &$_SESSION;
    foreach ($keyArray as $key) {
        $data = &$data[$key];
    }
    $data = $value;
}
© www.soinside.com 2019 - 2024. All rights reserved.