2

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

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

由于表格被分成<tr>(水平),然后<td>只给你水平输出。所以我能想到答案的唯一方法是 PHP 答案或 CSS/html 答案。

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

有没有办法<tr>垂直显示然后<td>水平分隔?

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

2 回答 2

2

弄清楚了。如果您添加display: block<td>元素,那么它们就会开始堆叠在一起。也许我只是筋疲力尽并且想了很多答案...谢谢

于 2012-05-16T00:30:44.043 回答
1

像下面这样的东西会起作用。我猜到了您拥有的数据类型,但基本上您只需找到项目最多的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>
于 2012-05-16T01:14:33.950 回答