使用foreach从DB获取数据到数组


Getting data from DB into array with foreach

我有一个包含事件的数据库表:

id |    title    | description | day_start  | day_end    | user_id
1  |   sometitle | blabla      | 2011-04-20 | 2011-04-21 |   1
2  |   title 2   | bleble      | 2011-04-20 | 2011-04-21 |   1

我想用foreach循环从我的db中读出这个。

我想把它存储到$data[day_start]

例如:在这种情况下,$data['2011-04-21']应该包含两个数组,每个事件一个。我不知道该怎么做。我有以下代码(CI):

($start参数是一个日期,如2011-04-20)。

    public function get_event_data($start)
{   
    $data = array();
    $query = $this->db->query(
                                "SELECT * 
                                 FROM tblEvents
                                 WHERE user_id = '" . $this->session->userdata('id') . "'
                                 AND day_start = '" . $start . "';"
                             );
    foreach($query->result() as $row)
    {
        $data[$row->day_start]  = array(
                            'title'         =>          $row->title,
                            'description'   =>          $row->description,
                            'day_start'     =>          $row->day_start,
                            'day_end'       =>          $row->day_end,
                            'time_start'    =>          $row->time_start,
                            'time_end'      =>          $row->time_end,
                            'user_id'       =>          $row->user_id
                  );
    }
    return $data;
}

但是,正如预期的那样,这只输出SECOND事件(因为我使用的是'=',它覆盖了第一次放入数组的数据):

Array ([2011-04-20] => Array ([title] =>测试事件2 [description]=>第二个事件。[day_start] => 2011-04-20 [day_end] =>2011-04-20 [time_start] => 12[time_end] => 13 [user_id] => 1))

(这里的数据与我在顶部提供的数据不同,但它是关于想法的,而不是数据)。

我尝试使用。=但是php抱怨没有找到这样的索引。因为这不是我发起的,我正试着加入进来。

然后,我尝试使用if(isset($data[$start])块,但这也没有真正让我任何地方。

我想获取某一天的所有事件,并将它们放在一个数组中,以便在应用程序中进一步处理。非常感谢。

try

$data[$row->day_start][]  = array(

第二组[]将创建一个自动迭代数组,因此不会重写数据。

除非我理解错了,CI允许您返回一个结果数组,这与您上面的代码所做的事情完全相同。

return $query->result_array();

会的

如果你不希望所有你的数据在数组中,那么不要选择*,只取你需要的。