将数组转换为HTML表,其中缺少值的单元格为空


Turn array into HTML table, with empty cells for missing values

我有一个带有数值的数组。每个值都不同,数组按升序排列,从最小值1到最大值80。

$numbers = array( "1", "3", "5", "6", "12", "13", "15", "20",
                  "24", "28", "32", "33", "34", "42", "47",
                  "49", "50", "54", "59", "79");

我想在一个表行中显示这个数组,每个数字都在一个单元格中,非当前值显示为空单元格,如下所示:

<tr>
    <td>1<td>
    <td><td>
    <td>3<td>
    <td><td>
    <td>5<td>
    <td>6<td>
    ....

换句话说,如果数组中缺少值,则应插入一个空的表单元格。在上面的示例中,24所在的单元格为空,因为这些值不在数组中。

总共将有80个<td>

类似的情况(假设最小值为1,最大值为80):

echo '<tr>';
for ($i = 1; $i <= 80; $i++) {
    echo '<td>';
    echo ( in_array( $i, $numbers ) ) ? $i : '';
    echo '</td>';
}
echo '</tr>';

如果您想动态查找阵列的最小值/最大值:

$min = min( $numbers );
$max = max( $numbers );
echo '<tr>';
for ($i = $min; $i <= $max; $i++) {
    echo '<td>';
    echo ( in_array( $i, $numbers ) ) ? $i : '';
    echo '</td>';
}
echo '</tr>';

解决了这样的问题:

$numbers=array("1","6","7","10","12","16","17","22","27","34","35","45","49","52","53","56","57","76","78","80");
function results($array){
    echo "<tr>";
    for ($i=1; $i<81 ; $i++) { 
        if (in_array($i, $array)) {
            echo "<td>".$i."</td>";
        }
        else{
            echo "<td></td>";
        }
    }
    echo "</tr>";
}
results($numbers);