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








