dougou8639 2012-11-30 17:59
浏览 28
已采纳

如何将数组项分组以输出到表PHP中

I have an array like this:

Array
(
    [0] => Array
        (
            [date] => 2012-11-29
            [description] => Work Done
            [hours] => 1.0
            [id] => 6502
            [person-id] => 8853
            [project-id] => 8928
            [todo-item-id] => 122353
            [person-name] => Jane Doe
        )

    [1] => Array
        (
            [date] => 2012-11-29
            [description] => Work Done 2
            [hours] => 1.0
            [id] => 6502
            [person-id] => 8853
            [project-id] => 8928
            [todo-item-id] => 122353
            [person-name] => Jane Doe
        )

    [2] => Array
        (
            [date] => 2012-11-28
            [description] => Work Done 3
            [hours] => 1.0
            [id] => 6502
            [person-id] => 8853
            [project-id] => 8928
            [todo-item-id] => 122353
            [person-name] => Jane Doe
        )

Etc.

I want to display this information in a table grouped by Date. I'm using foreach to get each of the values but I'm trying to figure out how to examine if the date is the same in each array and only echo the date once if so. This is what I've got so far...

<table>
     <tbody>
                <?php 

                  foreach($time as $log){
                    //tried this but it doesn't work 
                    //if(array_unique($log['date'])){
                      echo '<thead>
                              <tr class="info">
                                <td colspan="3">'.$log[date].'</td>
                              </tr>
                            </thead>';
                          //};


                  echo "<tr>";
                  echo "<td>{$log['todo-item-id']}</td>";
                  echo "<td>{$log['description']}</td>";
                  echo "<td>{$log['hours']}</td>";
                  echo "</tr>";
                } ?>

              </tbody>
</table>
  • 写回答

3条回答 默认 最新

  • dswwuo1223 2012-11-30 18:06
    关注

    You can only have one thead. Set the date at the end of the loop, or after you've done the following comparison: is this date not equal to the previous one, or not set. If so, output it else output a non-breaking space.

    <?php 
    
    foreach($time as $log) {
        // check if it is not set or not equal and output if needed
        echo '<tr class="info">
                <td colspan="3">'.(!isset($prevdate) || $prevdate!=$log[date]? $log[date] : '&nbsp;').'</td>
              </tr>
            ';
    
        echo "<tr>
            <td>{$log['todo-item-id']}</td>
            <td>{$log['description']}</td>
            <td>{$log['hours']}</td>
            </tr>";
        // set it
        $prevdate=$log[date];
    } 
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示