recherche

Maison  >  Questions et réponses  >  le corps du texte

Regrouper les résultats MySQL par ID pour effectuer une boucle

J'ai une table avec les données de vol dans MySQL. J'écris un code php qui regroupera et affichera les données à l'aide de 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

J'utilise $this->db->get() pour récupérer les données et je peux boucler facilement. Mais comme chaque ligne est dans un tableau, j’ai du mal à les regrouper. Je ne peux pas utiliser de groupes MySQL car j'ai besoin de chaque ligne.

Par exemple, je souhaite afficher les éléments suivants

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

Quelle est la meilleure façon de regrouper les résultats par air_id afin que je puisse itérer

P粉638343995P粉638343995229 Il y a quelques jours579

répondre à tous(1)je répondrai

  • P粉043295337

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

    1. Obtenir des données de la base de données :

      $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. Créez un tableau vide pour contenir des données groupées :

      $grouped_data = array();
    3. Parcourez les données récupérées et regroupez-les par 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. Vous avez maintenant les données regroupées par air_id dans le tableau $grouped_data. Vous pouvez parcourir ce tableau pour afficher les données que vous spécifiez :

      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 "
      "; }

    Ce code parcourra les données groupées et les affichera comme vous le décrivez, chaque groupe de données de vol se trouve sous l'air_id correspondant.

    répondre
    0
  • Annulerrépondre