codeigniter 按id对mysql结果进行分组以进行循环

5hcedyr0  于 8个月前  发布在  Mysql
关注(0)|答案(1)|浏览(59)

我在mysql中有一个飞行数据表。我正在编写一段PHP代码,它将使用CodeIgniter 3分组并显示数据

journey_id     air_id  FlightDuration  out_or_in   flightduration2
    1           1           20hr 5min   outbound    1205
    2           1           20hr 5min   outbound    1300
    3           1           17hr 55min  inbound     2258
    4           1           17hr 55min  inbound     1075
    5           2           31hr 40min  outbound    1970
    6           2           31hr 40min  outbound    1900
    7           2           17hr 55min  inbound     2223
    8           2           17hr 55min  inbound     1987
    9           3           10hr 45min  outbound    645
    10          3           11hr 25min  inbound     685

im使用$this->db->get()来检索数据,我可以很容易地循环通过。但是由于每行都在阵列IM中,发现难以将它们分组。我不能使用mysql组,因为我需要每一行。
作为一个例子,我想显示的项目如下

air_id - 1
20hr 5min   outbound    1205
20hr 5min   outbound    1300
17hr 55min  inbound     2258
17hr 55min  inbound     1075

air_id - 2
31hr 40min  outbound    1970
31hr 40min  outbound    1900
17hr 55min  inbound     2223
17hr 55min  inbound     1987

air_id - 3
10hr 45min  outbound    645
11hr 25min  inbound     685

什么是最好的方法来分组的结果由air_id,所以我可以迭代通过

zqry0prt

zqry0prt1#

1.从数据库中获取数据:

$this->db->select('journey_id, air_id, FlightDuration, out_or_in, flightduration2');
 $this->db->from('your_table_name'); // Replace 'your_table_name' with the actual table name
 $query = $this->db->get();
 $data = $query->result_array();

1.创建一个空数组来保存分组数据:

$grouped_data = array();

1.遍历获取的数据并按air_id分组:

foreach ($data as $row) {

    $air_id = $row['air_id'];

    // Check if the air_id already exists in the grouped_data array
    if (!isset($grouped_data[$air_id])) {
        // If not, initialize an empty array for this air_id
        $grouped_data[$air_id] = array();
    }

    // Add the current row to the group for this air_id
    $grouped_data[$air_id][] = $row;
}

1.现在,您在$grouped_data数组中拥有了按air_id分组的数据。您可以循环访问此数组以显示指定的数据:

foreach ($grouped_data as $air_id => $group) {
    echo "air_id - $air_id<br>";

    foreach ($group as $row) {
        echo $row['FlightDuration'] . ' ' . $row['out_or_in'] . ' ' . $row['flightduration2'] . '<br>';
    }

    echo "<br>";
}

这段代码将遍历分组数据并按照您的描述显示它,每组飞行数据都在相应的air_id下。

相关问题