Php 设置数据会话和数组\u merge\u recursive()
我想知道是否有人能在以下方面提供帮助。基本上,我有一个表单,允许用户选择开始和结束日期、开始时间和结束时间 用户可以添加时间块,因此他们选择想要的信息,发布它,然后返回页面,直到他们使用“完成”按钮处理表单 我面临的问题是,我需要我的数组将每个帖子附加到数组中,我有以下代码:Php 设置数据会话和数组\u merge\u recursive(),php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,我想知道是否有人能在以下方面提供帮助。基本上,我有一个表单,允许用户选择开始和结束日期、开始时间和结束时间 用户可以添加时间块,因此他们选择想要的信息,发布它,然后返回页面,直到他们使用“完成”按钮处理表单 我面临的问题是,我需要我的数组将每个帖子附加到数组中,我有以下代码: if($this->input->post('submit', TRUE) == 'more') { $start_date = $this->input->post
if($this->input->post('submit', TRUE) == 'more')
{
$start_date = $this->input->post('start_date', TRUE);
$start_time = $this->input->post('start_time', TRUE);
$end_time = $this->input->post('end_time', TRUE);
$start_dates['start_date'] = $start_date;
$start_dates['start_time'] = $start_time;
$start_dates['end_time'] = $end_time;
if(isset($this->session->userdata['start_dates']) )
{
$merged = array_merge_recursive($start_dates, $this->session->userdata['start_dates']);
}
else
{
$merged = null;
$this->session->set_userdata('start_dates', $start_dates);
}
问题是,每次我们添加一个新的时间块时,数组中的一个项都会被覆盖
阵列的预期输出为:
Array
(
[start_date] => Array
(
[0] => 2012-08-31
[1] => 2012-08-29
)
[start_time] => Array
(
[0] => 08:00
[1] => 09:00
)
[end_time] => Array
(
[0] => 12:00
[1] => 17:00
)
)
在这种情况下,数组键[1]总是被覆盖,如果我们只添加两个时间块,这不会是一个问题-但是用户需要能够添加2个以上的块,总限制由用户决定,直到我们稍后指定的设置限制为止
谁能帮我理清逻辑
提前谢谢
标记您也需要将合并的数据保存到会话中,并且阵列合并应应用于会话中存储的阵列:
if($this->session->userdata['start_dates'])
{
$merged = array_merge_recursive($this->session->userdata['start_dates'],
$start_dates);
}
else
{
$merged = $start_dates;
}
$this->session->set_userdata('start_dates', $merged);
试过那个燕,但现在根本救不了什么。有点卡住了,不知道你能不能帮我调试一下逻辑?谢谢您的回复。@MarkH我稍微修改了我的答案。您在尝试之前破坏了会话吗?嗨,Yan,再次感谢这似乎是会话问题,我正在尝试您的解决方案,现在似乎可以工作了,可能很快会有更多问题要问您:-)有没有理由从数组\u合并\u递归切换到数组\u推送?是否需要考虑性能开销?查看预期输出后,array_push将不会返回预期结果。它只会在数组的末尾添加一个新元素。我已相应地编辑了答案。