2

12 列のテーブルを表示するループを作成しています。番号 1912 で始まり、2013 で終わります。問題は、ループして 1920 になると、残りがなく、新しい行が始まることです。12 列目の後に新しい行を作成するコードを取得する必要があります。

これは私が得ている結果です:

http://imgur.com/AOIQf

そして、これが私がこれまでに持っているものです:

<?php
    $columns = 12;
    $Year = 1912;

    echo "<table width="755" border="1">";
    echo "<tr>";
    while ($Year <= 2013) {
        if (!($Year % $columns)) {
            echo "</tr><tr>";
        }
        echo "<td>$Year</td>";
        ++$Year;
    }
    echo "</tr>";
    echo "</table>";
?>
4

3 に答える 3

1
<?php

$columns = 12;
$Year = 1912;
$i=1;
echo "<table width=\"755\" border=\"1\">";
echo "<tr>";
while ($Year <= 2013) 
    {
    if ($i==13)
        {
            echo "</tr><tr>";   
            $i=1;
        }
    echo "<td>$Year</td>";
    $Year++;
    $i++;
    }
echo "</tr>";
echo "</table>";

?>
于 2013-01-18T17:48:00.247 に答える
1

解決策 1

次のように、これが一致する年の列を追加および先頭に追加する必要があります。

ここに画像の説明を入力

そして、これを行うためのコードは次のとおりです。

<?php
    $columns = 12;
    $startingYear = 1912;
    $endingYear = 2013;

    $realStartingYear = $startingYear;
    $realEndingYear = $endingYear;

    //Find the real starting year by going back a year until we hit the right one
    while ($realStartingYear % $columns) {
        $realStartingYear--;
    }

    //Find the real ending year by going forward a year until we hit the right one
    while ($realEndingYear % $columns) {
        $realEndingYear++;
    }

    echo '<table width="755" border="1">';
    echo "<tr>";
    for ($year = $realStartingYear; $year < $realEndingYear; $year++) {
        if (!($year % $columns)) {
            echo "</tr><tr>";
        }
        echo "<td>" . ($year >= $startingYear && $year <= $endingYear ? $year : "") . "</td>";
    }
    echo "</tr>";
    echo "</table>";
?>

他の列も表示したい場合は、変更するだけです

echo "<td>" . ($year >= $startingYear && $year <= $endingYear ? $year : "") . "</td>";

echo "<td>" . $year . "</td>";

解決策 2

次のように、テーブルを 1912 から開始します。

ここに画像の説明を入力

コードは非常に単純になります。

<?php
    $columns = 12;
    $startingYear = 1912;
    $endingYear = 2013;

    echo '<table width="755" border="1">';
    for ($i = $startingYear; $i <= $endingYear; $i += $columns) {
        echo "<tr>";
        for ($j = 0; $j < $columns; $j++) {
            echo "<td>" . ($i + $j) . "</td>";
        }
        echo "</tr>";
    }
    echo "</tr>";
    echo "</table>";
?>
于 2013-01-18T17:59:58.940 に答える
0

12列ごとに折り返したい場合は、現在の列を追跡し、それを使用して行をいつ終了するかを決定します(たとえば、12列ごと)-

$col = 1;

while ($Year <= 2013 && $col++) {
        if (!($col % $columns)) {
            //...

ラップするタイミングを決定するために使用$Yearすると、物事が複雑になります。

于 2013-01-18T17:50:11.073 に答える