suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Gruppieren Sie MySQL-Ergebnisse nach ID für die Schleife

Ich habe eine Tabelle mit Flugdaten in MySQL. Ich schreibe einen PHP-Code, der Daten mit Codeigniter 3 gruppiert und anzeigt

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

Ich verwende $this->db->get() zum Abrufen der Daten und kann problemlos eine Schleife durchführen. Aber da sich jede Zeile in einem Array befindet, fällt es mir schwer, sie zu gruppieren. Ich kann keine MySQL-Gruppen verwenden, da ich jede Zeile benötige.

Zum Beispiel möchte ich die folgenden Artikel anzeigen

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

Wie gruppiere ich die Ergebnisse am besten nach air_id, damit ich sie wiederholen kann

?
P粉638343995P粉638343995229 Tage vor580

Antworte allen(1)Ich werde antworten

  • P粉043295337

    P粉0432953372024-04-07 16:23:46

    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();
    2. 创建一个空数组来保存分组数据:

      $grouped_data = array();
    3. 迭代获取的数据并按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;
      }
    4. 现在,您已在 $grouped_data 数组中按 air_id 分组了数据。您可以循环访问此数组以显示您指定的数据:

      foreach ($grouped_data as $air_id => $group) {
          echo "air_id - $air_id
      "; foreach ($group as $row) { echo $row['FlightDuration'] . ' ' . $row['out_or_in'] . ' ' . $row['flightduration2'] . '
      '; } echo "
      "; }

    此代码将循环遍历分组数据并按照您的描述进行显示,每组航班数据都在相应的air_id下。

    Antwort
    0
  • StornierenAntwort