打印一年中每天的结果表

时间:2011-06-22 22:07:47

标签: php html date loops

我有一个看起来像这样的数组。

Array (
    [1] => Array (
            [1] => Array ([0] => 12)
            [2] => Array ([0] => 23)
             # up to 12.
     # up to 31.

它从数组1到31(每月的每个可能日期)运行,然后在数组1-12(每个月)内运行。

我需要创建一个HTML表格,如下所示:

Date          January February and so on... to December
2011-01-01    12      23

因此,第一列和第一行的日期是月份。

我可以创建此表的最佳方法是什么? 非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

最好的方法是将数组转换为包含所有日期(行)的新数组,并且每行包含另一个包含所有月份(列)的数组。

这种格式更容易显示。

〔实施例:

Array (
    [1] => Array (
            [1] => Array ([0] => 12)
            [2] => Array ([0] => 23)
             # up to 12.
     # up to 31.

Ups,无需转换它!让我们为该数组命名:$dates

echo '<pre>';
foreach($dates as $rowIndex => $row) {
  printf('Row header (%2d):', $rowIndex);
  foreach($row as $col) {
      printf('%-10s', $col);
  }
  printf("<br>\n")
}
echo '</pre>';

我将标题添加到您的上方。

答案 1 :(得分:0)

假设您的数组名为$data

<table>
  <thead>
    <th>Date</th>
    <th>January</th>
    <th>February</th>
    <th>March</th>
    <th>April</th>
    <th>May</th>
    <th>June</th>
    <th>July</th>
    <th>August</th>
    <th>September</th>
    <th>October</th>
    <th>November</th>
    <th>December</th>
  </thead>
  <tbody>
    <?php foreach ( $data as $key => $value ): ?>
      <tr>
        <th><?php echo date('Y-m-d', mktime(0, 0, 0, (int)date('m'), (int)$key)); ?></th>
        <?php for ( $i = 1; $i <= 12; $i++ ): ?>
          <td><?php echo ! empty($value[$i][0]) ? $value[$i][0] : '&nbsp;'; ?></td>
        <?php endfor; ?>
      </tr>
    <?php endforeach; ?>
  </tbody>
</table>