我正在尝试从数组中构建一个结果表。我目前的结果输出如下:
ID VALUE EXTRA
--------------------------------------
| 1 | Value 1 | Extra 1 |
|-----|---------------------|----------|
| 1 | Value 2 | Extra 2 |
|-----|---------------------|----------|
| 2 | Value 3 | Some 1 |
|-----|---------------------|----------|
| 3 | Value 4 | Some 2 |
|-----|---------------------|----------|
| 3 | Value 5 | Nothing |
--------------------------------------
请注意重复的ID值。我想做的是在我当前的循环中构建一个循环,它不会显示重复的ID。像这样:
ID VALUE EXTRA
--------------------------------------
| 1 | Value 1 | Extra 1 |
| |---------------------|----------|
| | Value 2 | Extra 2 |
|-----|---------------------|----------|
| 2 | Value 3 | Some 1 |
|-----|---------------------|----------|
| 3 | Value 4 | Some 2 |
| |---------------------|----------|
| | Value 5 | Nothing |
--------------------------------------
这是我目前的代码,简化:
<?php
$i=0;
while ($i < $mynum) {
$f1=mysql_result($myresult,$i,"tableID");
$f2=mysql_result($myresult,$i,"values");
$f3=mysql_result($myresult,$i,"extra");
?>
<tr>
<td><?php echo $f1; ?></td>
<td><?php echo $f2; ?></td>
<td><?php echo $f3; ?></td>
</tr>
<?php
$i++;
}
?>
有没有办法以我想要的方式动态构建这个表?或者我应该重新考虑我的策略?
答案 0 :(得分:2)
假设ID按顺序排序,请将ID存储在单独的变量中,并检查它是否已更改。如果有,打印ID;如果没有,请打印
或类似值。
答案 1 :(得分:1)
这是一种从您提供的代码中完成此操作的方法
<?php
$i=0;
$previousId = ''; // keeps track of the previous Id
while ($i < $mynum) {
$html = '';
$f1=mysql_result($myresult,$i,"tableID");
$f2=mysql_result($myresult,$i,"values");
$f3=mysql_result($myresult,$i,"extra");
$html .= '<tr>';
if($previousId != $f1){ // fill the cell only if the new Id is different from the previous value
$html .= '<td>'.$f1.'</td>';
} else {
$html .= '<td> </td>';
}
$previousId = $f1;
$html .= '<td>'.$f2.'</td>';
$html .= '<td>'.$f3.'</td>';
$html .= '</tr>';
$i++;
}
echo $html;
?>
但是假设$f1
是有序的。