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将不会返回预期结果。它只会在数组的末尾添加一个新元素。我已相应地编辑了答案。