提问人:LiveEn 提问时间:9/11/2023 更新时间:9/11/2023 访问量:66
按 ID 对 MySQL 结果进行分组以进行循环
group mysql results by id for looping
问:
我有一个表,其中包含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
我使用 A 来检索数据,我可以轻松循环。但是由于每一行都在数组中,我发现很难对它们进行分组。我不能使用MySQL组,因为我需要每一行。$this->db->get()
例如,我想显示以下项目
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
答:
2赞
Victor
9/11/2023
#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();
创建一个空数组来保存分组数据:
$grouped_data = array();
遍历获取的数据并按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; }
现在,您可以在 $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下。
评论