gpt4 book ai didi

PHP 将 SQL 字段名称打印为数组,对应的值每行显示一次

转载 作者:行者123 更新时间:2023-11-29 12:11:55 24 4
gpt4 key购买 nike

有一个像这样的 SQL 表:

Titles  Device1 Device2 Device3
Title1 inputA inputA inputB
Title2 inputA inputB inputC
Title3 inputB inputB inputB

我希望值 inputA、inputB、inputC 在每行中分别出现一次,其对应的字段 Device1、Device2、Device3 在“输入”值后面显示为数组,如下所示:

Titles  header1 header2 header3
Title1 inputA: inputB:
Device1 Device3
Device2
Title2 inputA: inputB: inputC:
Device1 Device2 Device3
Title3 inputB:
Device1
Device2
Device3

这是我到目前为止在自定义 header 和 SELECT 语句之后得到的结果:

$myquery = $mysqli->query ($sqlSelect);
if ($myquery = $mysqli->query ($sqlSelect)) {
while($row = mysqli_fetch_assoc($myquery)){
$format=array();
foreach ($row as $key => $val) {
switch($key) {
case "Device1":
case "Device2":
case "Device3":
$format[$val] = "<br>".$key;
break;
}
}
printf ("<tr><td>%s</td>", $row["Titles"]);
foreach ($format as $key => $val) {
printf ("<td>$key:<br/>$val</td>");
}
printf ("</tr>");
}

但不知道如何让所有“设备”字段显示其相应的值。看起来像这样:

Titles  header1 header2 header3
Title1 inputA: inputB:
Device1 Device3
Title2 inputA: inputB: inputC:
Device1 Device2 Device3
Title3 inputB:
Device1

单元格中出现多个设备字段的唯一一次是当带有标题的行中没有值时。 break 之前遗漏了什么? while 语句?

最佳答案

首先,将数据转换为更容易输出的格式会更容易。下面是一个小例子:

$result = array();
while($row = mysqli_fetch_assoc($myquery)){
$tmp = array();
foreach (array('Device1', 'Device2', 'Device3') as $key) {
if (!isset($tmp[$row[$key]])) $tmp[$row[$key]] = array();

$tmp[$row[$key]][] = $key;
}

$result[$row['Titles']] = $tmp;
}

现在您可以输出正确的 html 表格(包括空的尾随单元格):

$max = 0;
foreach ($result as $title => $inputs) {
$max = max($max, count($inputs));
}

print('<table>');
print('<tr><td>Titles</td><td>header1</td><td>header2</td><td>header3</td></tr>');
foreach ($result as $title => $inputs) {
print('<tr><td>' . $title . '</td>');

foreach ($inputs as $input => $devices) {
print('<td>' . $input . '<br/>' . implode('<br/>', $devices) . '</td>');
}

// fill with empty cells
for ($i = 0; $i < $max - count($inputs); ++$i) {
print('<td></td>');
}

print('</tr>');
}
print('</table>');

关于PHP 将 SQL 字段名称打印为数组,对应的值每行显示一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com