0

想知道是否有人可以提供以下帮助。基本上我有一个表单,允许用户选择开始和结束日期、开始时间和结束时间。

用户可以添加时间块,因此他们选择他们想要的信息,发布它,然后返回页面,直到他们使用完成按钮处理表单为止。

我面临的问题是,我需要我的数组将每个帖子附加到我的数组中,我有以下代码:

    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 个块,总限制取决于用户设置的限制我们稍后会指定。

任何人都可以帮助理清逻辑。

提前致谢。

标记

4

1 回答 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);
于 2012-08-29T11:40:30.390 回答