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

次のようなものが機能します。私はあなたが持っているデータの種類を推測しましたが、基本的には、アイテムが最も多い日を見つけて、毎日のthfor を作成trし、最大の日にあるアイテムと同じ数の for を作成し、最後にtd印刷する for each day を作成するだけです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 に答える