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);
        }

問題は、新しい時間ブロックを追加するたびに、配列内の項目の 1 つが上書きされることです。

配列の期待される出力は次のとおりです。

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 つだけ追加する場合、これは問題になりません。ただし、ユーザーは 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 に答える