如果我有以下内容,
$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);
但如果有更多的“蛋糕”方式,我会喜欢它。
答案 0 :(得分:12)
你可以这样做:
$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
,则不应该受到伤害。
答案 1 :(得分:2)
您需要读取会话数据,然后将其与要追加的数据合并。您还应该在执行此操作之前检查会话数据是否存在:
if ($this->Session->check('ScoreCardCriteria')) {
$this->Session->write('ScoreCardCriteria', am(
$this->Session->read('ScoreCardCriteria'),
array('test')
));
} else {
$this->Session->write('ScoreCardCriteria', array('test'));
}
希望有所帮助。