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 關注
- 148 瀏覽
添加回答
舉報