迭代以形成自定义html表的循环

问题描述 投票:-1回答:1

我想通过数据库查询在php中形成一个自定义html表。我的SQL查询是

$query = db_select('taxonomy_term_data','td');
    $query->join('drone','dg','dg.tid = td.tid ');
    $query->fields('td',array('tid','name'));
    $query->fields('dg',array('drone_name'));
    $result=$query->execute()->fetchAll(); 

查询返回的数据如下:

Drone Name        Drone Assigned
Huge                DJI
Huge                Parrot
Beginner            Skydio
Beginner            Insitu
Beginner            EHANG
 $drone_table='<br/>
  <table id =  width="40%" cellspacing="5" cellpadding="5" border="1" align="center";">
    <th>Drone Name</th> 
    <th>Drones Assigned</th>';

我写了一个for循环语句

foreach ($result as $ts){

      $drones_assigned[] = $ts->name;
      $drn_name = $ts->drone_name;      

    $com_arr = implode(",",$drone_assigned);

    $drone_table.='<tr>
    <td>'.$drn_name.'</td>
    <td>'.$com_arr.'</td>
    </tr>';
}

这不构成我想要的表。 t将分配的所有无人机和一架无人飞机组成一张桌子。

我想要类似

Drone Name           Drone Assigned
     Huge                 DJI, Parrot
     Beginner             Skydio,Insitu,EHANG

但是我得到

Drone Name        Drone Assigned
    Beginner             DJI, Parrot, Skydio,Insitu,EHANG
php mysql drupal-7
1个回答
0
投票

[好的,这是一种方法,我将在HTML代码中使用alternative foreach语法,因为我个人认为这样更易读。

  1. 首先我们有这个数据库查询结果,我将其分配给PHP数组:
foreach
  1. 现在我们必须为每个无人机名称获取分配的无人机,我们将使用$results = [ ['name' => 'Huge', 'assigned' => 'DJI'], ['name' => 'Huge', 'assigned' => 'Parrot'], ['name' => 'Beginner', 'assigned' => 'Skydio'], ['name' => 'Beginner', 'assigned' => 'Insitu'], ['name' => 'Beginner', 'assigned' => 'EHANG'], ]; 循环,该循环将生成foreach形式的数组:
$array['drone_name'] = ['assigned_drones', '.....']
  1. 最后,我们将使用$drones = []; foreach ($results as $drone) { if (!array_key_exists($drone['name'], $drones)) { $drones[$drone['name']] = []; } $drones[$drone['name']][] = $drone['assigned']; } 循环(替代语法)在HTML表中打印这些值:
foreach
© www.soinside.com 2019 - 2024. All rights reserved.