2012-08-29 106 views
0

想知道是否有人可以帮助以下。基本上我有一个表格,允许用户选择开始和结束日期,开始时间和结束时间。设置数据会话和array_merge_recursive()

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

我现在面临的问题是,我需要我的阵列,以每个岗位追加到我的数组,我有以下代码:

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); 
+0

尝试过严,但它不保存任何东西现在所有。有点困惑,想知道是否可以提供更多的帮助来调试这个逻辑对我来说? 感谢您的回复至今。 – MarkH

+0

@MarkH我稍微修改了我的答案。尝试之前你是否破坏了会话? –

+0

嗨妍,再次感谢这是我尝试你的解决方案时遇到的一个问题,看来现在可以工作,可能很快就会有更多的问题:-) – MarkH