【问题标题】:Html table with vertical <tr> and PHP arrays带有垂直 <tr> 和 PHP 数组的 Html 表
【发布时间】:2018-07-12 00:28:53
【问题描述】:

我有一个 PHP 数组,我想通过它递增并在表格中输出信息。唯一的问题是 HTML 表格的组织方式。我想垂直输出数据。

例如 - 第一行显示一周中的每一天,然后在每一天的下方垂直显示某家餐厅供应的食物。它会从一周中的每一天直接显示 5 道菜。

因为表格被分成&lt;tr&gt;(水平)和&lt;td&gt;,这只会给你水平输出。所以我能想到答案的唯一方法是 PHP 答案或 CSS/html 答案。

Example:
TR - TD - TD - TD 
TR - TD - TD - TD 
TR - TD - TD - TD 

有没有办法让&lt;tr&gt; 垂直显示,然后由&lt;td&gt; 水平分隔?

Example like this:
TR TR TR
|   |  |
TD TD  TD
|   |  |
TD TD  TD

【问题讨论】:

  • 它是一个二维数组:Days 然后是当天的 Items,它是动态生成的。
  • 如果无法改变 TRs 的方向,那么我必须找出一个可能涉及一些 for 循环的 php 答案
  • 或者我可以忽略所有表格并使用 div,因为它们默认垂直分解
  • 没关系...在那里回答了我自己的问题。谢谢

标签: php css html-table


【解决方案1】:

想通了。如果您将display: block 添加到&lt;td&gt; 元素,那么它们就会开始相互堆叠。也许我只是筋疲力尽并且想了很多答案......谢谢

【讨论】:

  • 这种方法其实更好,因为源中的内容是按顺序输出的,所以屏幕阅读器会按照逻辑顺序阅读。但是,您可能需要将 TR 元素向左浮动。
  • 我什至没有想到屏幕阅读器,但很高兴听到。是的,我不得不浮动 TR 元素。
【解决方案2】:

类似下面的东西会起作用。我猜到了您拥有的数据类型,但基本上您只需找到项目最多的一天,为每一天创建一个th,为最大一天中的尽可能多的项目创建一个tr,最后创建td 用于打印与 for 循环计数器对应的项目的每一天。

<?php

$mon_arr = array("mon 1", "mon 2", "mon 3");
$tue_arr = array("tue 1", "tue 2", "tue 3", "tue 4");
$wed_arr = array("wed 1", "wed 2", "wed 3", "wed 4");
$thu_arr = array("thu 1", "thu 2");
$fri_arr = array("fri 1", "fri 2", "fri 3", "fri 4", "fri 5");
$sat_arr = array("sat 1");
$sun_arr = array("sun 1");

$week = array(
    "Monday"    => $mon_arr,
    "Tuesday"   => $tue_arr,
    "Wednesday" => $wed_arr,
    "Thursday"  => $thu_arr,
    "Friday"    => $fri_arr,
    "Saturday"  => $sat_arr,
    "Sunday"    => $sun_arr
);


$max_day = 0;

foreach($week as $day => $data){

    $current = count($data);

    if($current > $max_day){
        $max_day = $current;
    }
}

?>

<table>
    <thead>
        <tr>
            <?php
                foreach( $week as $day => $data ){
                    echo "<th>$day</th>";
                }
            ?>
        </tr>
    </thead>
    <tbody>

        <?php for( $i = 0; $i < $max_day; $i++ ){ ?>
        <tr>

            <?php
                foreach( $week as $day => $data ){

                    if( $data[$i] ){
                        echo "<td>$data[$i]</td>";
                    } else {
                        echo "<td>&nbsp;</td>";
                    }

                }
            ?>

        </tr>
        <?php } ?>

    </tbody>
</table>

【讨论】:

  • 9 年后,这就是我一直在寻找的答案。感谢您发帖。
猜你喜欢
  • 2013-05-30
  • 2023-03-25
  • 2017-04-28
  • 2017-07-20
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
相关资源
最近更新 更多