【问题标题】:Turn array into HTML table, with empty cells for missing values将数组转换为 HTML 表格,其中缺少值的单元格为空
【发布时间】:2016-04-06 03:19:54
【问题描述】:

我有一个包含数值的数组。每个值都不一样,数组按升序排列,从最小值 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 个&lt;td&gt;

【问题讨论】:

  • 我想您可以从 1 循环到数组中的最大值,并在每次循环迭代时输出一个 &lt;td&gt; 单元格。输出单元格时,检查数组是否包含该值。如果是,也输出该值。

标签: php arrays


【解决方案1】:

这样的事情怎么样(假设最小值为 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>';

【讨论】:

    【解决方案2】:

    解决了这样的问题:

    $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);
    

    【讨论】:

    • 您应该接受@cale_b 的答案...而且该代码比您在此处发布的代码更干净(例如,您有两个不同的地方可以生成表格单元格标记,而不仅仅是一)。 (海事组织)
    • 非常感谢。我会使用你的代码。更干净,更容易理解
    猜你喜欢
    • 1970-01-01
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多