Regrouper les résultats MySQL par ID pour effectuer une boucle
P粉638343995
P粉638343995 2024-04-06 17:27:56
0
1
576

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粉638343995
P粉638343995

répondre à tous(1)
P粉043295337
  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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal