我想通过数据库查询在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
[好的,这是一种方法,我将在HTML代码中使用alternative foreach
语法,因为我个人认为这样更易读。
foreach
$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', '.....']
$drones = [];
foreach ($results as $drone) {
if (!array_key_exists($drone['name'], $drones)) {
$drones[$drone['name']] = [];
}
$drones[$drone['name']][] = $drone['assigned'];
}
循环(替代语法)在HTML表中打印这些值:foreach