dongxin2734
dongxin2734
2018-10-30 16:43

仅使用值数组中的PHP创建表

已采纳

I've to print a table using TCPDF for creating a PDF using PHP from an array of contents.

In my example I'll use 7 entries, but can be more or less.

$array = array(
 0 => "[ ] Option 1",
 1 => "[x] Option 2",
 2 => "[ ] Option 3",
 3 => "[ ] Option 4",
 4 => "[x] Option 5",
 5 => "[ ] Option 6",
 6 => "[ ] Option 7",
 ...
);

My table layout is dynamic: I can set numbers of columns for display purpose ( $num_cols can be 1, 2, 3 or 4 columns)

Based on my $num_cols, I've to split my content of the array in each TD cell.

So, if I set $num_cols = 4, i need to show something like that:

<table>
  <tr>
    <td>[ ] Option 1</td>
    <td>[x] Option 2</td>
    <td>[ ] Option 3</td>
    <td>[ ] Option 4</td>
  </tr>
  <tr>
    <td>[x] Option 5</td>
    <td>[ ] Option 6</td>
    <td>[ ] Option 7</td>
    <td></td>
  </tr>
</table>

I tried to start some ideas but in this example I can get only a row. I don't know how to create the external loop:

echo "<table>";
echo "<tr>";

for ( $i = 0; $i < $num_cols; $i++ ) {

 echo "<td>";
 if ( isset($array[$i]) {echo $array[$i];} else {}
 echo "</td>";

}
echo "</tr>";
echo "</table>";
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • doudou890510 doudou890510 3年前

    array-chunk will help you:

    <?php
    $num_cols = 4;
    $array = [1,2,3,4,5,6,7,8];
    
    echo "<table>";
    foreach (array_chunk($array, $num_cols) as $chunk) {
        echo "<tr>";
        foreach ($chunk as $item) {
            echo "<td>";
            echo $item;
            echo "</td>";
        }
        echo "</tr>";
    }
    echo "</table>";
    

    and you can use some other cool-stuff from php :)

    <?php
    $num_cols = 4;
    $array = [1,2,3,4,5,6,7,8];
    
    echo "<table><tr><td>" .
        implode("</td></tr><tr><td>",
            array_map(function(array $part) {
                return implode('</td><td>', $part);
            }, array_chunk($array, $num_cols))
        )
    . "</td></tr></table>";
    
    点赞 评论 复制链接分享
  • dopuz8728 dopuz8728 3年前
    <?php
    $array = array(
     0 => "[ ] Option 1",
     1 => "[x] Option 2",
     2 => "[ ] Option 3",
     3 => "[ ] Option 4",
     4 => "[x] Option 5",
     5 => "[ ] Option 6",
     6 => "[ ] Option 7"
    );
    $num_cols = 4;
    
    //Use $i as a counter
    $i = 0;
    echo '<table>';
    foreach ($array as $key => $val) {
        //If we are outputting the first column in a row, create a new tr tag
        if ($i % $num_cols == 0)
            echo '<tr>';
    
        //Output the column
        echo '<td>' . $val . '</td>';
    
        //If we are at the end of the number of columns, close the tr tag
        if ($i % $num_cols == 3)
            echo '</tr>';
        $i++;
    }
    
    //If we didn't close the tr tag in the loop, close it now
    if ($i % $num_cols != 0)
        echo '</tr>';
    echo '</table>';
    ?>
    
    点赞 评论 复制链接分享

相关推荐