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

Posted

技术标签:

【中文标题】使用 foreach 将数据从 DB 获取到数组中【英文标题】:Getting data from DB into array with foreach 【发布时间】:2011-08-09 09:08:41 【问题描述】:

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

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 循环从我的数据库中读出这个。

我想把它存入$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 事件(因为我使用的是 '=',它会覆盖第一次放入数组中的数据):

数组 ( [2011-04-20] => 数组 ( [标题] => 测试事件 2 [描述] => 第二个事件。 [day_start] => 2011-04-20 [day_end] => 2011-04-20 [时间开始] => 12 [time_end] => 13 [user_id] => 1))

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

我尝试使用 .= 但后来 php 抱怨找不到这样的索引。因为我没有启动它,我正在尝试添加它。

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

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

【问题讨论】:

【参考方案1】:

试试

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

第二组[] 将创建一个自动迭代数组,因此不会覆盖任何数据。

【讨论】:

非常感谢。做到了。 :D 酷,自动迭代数组是一个非常有用的概念!!【参考方案2】:

除非我误解,CI 允许您返回一个结果数组,这与您上面的代码完全相同。

return $query->result_array();

会做的。

如果您不希望 all 数组中的数据,请不要选择 *,而只取您需要的数据。

【讨论】:

以上是关于使用 foreach 将数据从 DB 获取到数组中的主要内容,如果未能解决你的问题,请参考以下文章

将数据从 javascript forEach 循环中的 php 数组发送到 ajax 调用的 url

PHP 数组和对象在一起 - 不好/好的做法?

从 db 获取数据到 js 数组

如何在 PHP 的 foreach 循环中优化大型 mySQL?

如何在laravel 6中获取foreach中的数组总和

从数组中获取前两个值并运行 foreach