2 回答
TA贡献1796条经验 获得超4个赞
正如其他人所说,您应该将水平阵列转换为垂直阵列。
当然,它应该是一个通用函数来转换任何查询结果,而不是对行标题进行硬编码。这个想法是获取每一行的数组键并将它们用作新数组的键,然后将每个对应的值添加到新数组项。
这是在 mysqli 中的实现方式:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = mysqli_connect('127.0.0.1','root','','test');
$mysqli->query("set names 'UTF8'");
$data = [];
$res = $mysqli->query("SELECT Name, Age, Height FROM student order by Name desc");
while ($row = $res->fetch_assoc()) {
foreach(array_keys($row) as $key) {
$data[$key][] = $row[$key];
}
}
然后你得到一个具有所需结构的数组,你可以使用 ROOT 答案中的代码输出它:
<table border="1">
<?php foreach($data as $key => $val): ?>
<tr>
<td><?= $key ?></td>
<?php foreach($val as $field): ?>
<td><?= $field ?></td>
<?php endforeach ?>
</tr>
<?php endforeach ?>
</table>
TA贡献1812条经验 获得超5个赞
我将您的数据模拟到普通数组中,我使用了一个 while 循环来创建一个新的Array并创建我们需要能够将列翻转为行的格式,这就是我认为您想要的:
<?php
$users = [
[
'name'=> 'James',
'height'=> 1.75,
'age'=> 18,
],
[
'name'=> 'Bill',
'height'=> 170,
'age'=> 16,
]
];
$newArr = [];
foreach($users as $key => $val) {
$newArr['name'][$i] = $val['name'];
$newArr['age'][$i] = $val['age'];
$newArr['height'][$i] = $val['height'];
$i++;
}
?>
<table border="1">
<?php foreach($newArr as $key => $val): ?>
<tr>
<td><?php echo $key; ?></td>
<?php foreach($val as $field): ?>
<td><?php echo $field; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach ?>
</table>
- 2 回答
- 0 关注
- 112 浏览
添加回答
举报