如果我有以下内容,
$this->Session->write('ScoreCardCriteria', 'test');
如果想将另一个项目作为项目数组添加到ScoreCardCriteria中,我该怎么做?
使用常规PHP,它将类似于
$_SESSION['ScoreCardCriteria'][] = 'test';
我想出了这个:
$new_array = array_merge((array)$this->Session->read('ScoreCardCriteria'), array('test'));
$this->Session->write('ScoreCardCriteria', $new_array);
但如果有一种更"蛋糕"的方式,我会很高兴的。
您可以这样做:
$this->Session->write('ScoreCardCriteria', array( 'test' ) );
然后:
$data = $this->Session->read('ScoreCardCriteria');
$data[] = 'test';
$this->Session->write('ScoreCardCriteria', $data);
但是,老实说,CakePHP在内部使用$_SESSION对象,只是覆盖默认的会话处理程序。->write
所做的唯一一件事就是解析一个点符号集路径(看起来像foo.bar.x
),而您没有这样做。如果您正在观察特定的值,则返回调试信息。如果直接修改$_SESSION
,应该不会有什么坏处。
您需要读取会话数据,然后将其与要附加的数据合并。在这样做之前,您还应该检查会话数据是否存在:
if ($this->Session->check('ScoreCardCriteria')) {
$this->Session->write('ScoreCardCriteria', am(
$this->Session->read('ScoreCardCriteria'),
array('test')
));
} else {
$this->Session->write('ScoreCardCriteria', array('test'));
}
希望能有所帮助。