1

ループの最大数がわかっているループ構造と、特定のフィールド/入力に対して個別の増分増加があるループ構造を構築しようとしています。これを念頭に置いて、ネストされた for() ループ構造を追求する必要があると考えています。

例として、エコーされたゴールが次のようになるとします。

<table>
    <tr>
        <td><input id="1" secondaryId="1" ></td>
        <td><input id="2" secondaryId="1" ></td>
        <td><input id="3" secondaryId="1" ></td>
    </tr>
    <tr>
        <td><input id="4" secondaryId="2" ></td>
        <td><input id="5" secondaryId="2" ></td>
        <td><input id="6" secondaryId="2" ></td>
    </tr>
    <tr>
        <td><input id="7" secondaryId="3" ></td>
        <td><input id="8" secondaryId="3" ></td>
        <td><input id="9" secondaryId="3" ></td>
    </tr>
    <!-- etc -->
</table>

したがって、この例の id は入力ごとに 1 ずつ増加しますが、secondaryId は 3 回の入力ごとに増加します。さらに視覚化するために、次のことを考慮してください。

目的のループの表現例

私はコードのためにこの行に沿っていくつかのことを試しました:

<?php
echo"<table>";
for ($t=1;$t<4;$t++){
    echo"<tr>";
        for($y=1;$y<4;$y++){
            echo"<td><input id='$y' secondaryId='$t'></td>";
        }
    echo"</tr>";
}
echo"</table>";
?>

明らかにそれは機能しておらず、代わりにこれをエコーバックします:

ループ内の現在の取り組みで何が起こっているかの表現例

$y親ループのすべての反復(正しい単語?)で、変数が1にリセットされるため、問題が発生している理由が正確にわかります。

$yループ全体で増加するようにループを操作するにはどうすればよいですか? 考慮すべき foreach の組み合わせはありますか?

idまた、上記の「 」と「secondaryId」の type 属性は固定されており、変更できないとしましょう。

Excel を使用して手動で入力フィールドを手動で作成する最後の手段を検討しましたが、構築したい入力フィールドが50 行( <tr>) × 23 列( <td>)であることを考慮すると、これは面倒でデバッグの問題が発生する可能性があります。


> 更新:

私はFabioの答えを受け入れました.Maiden B.の答えも受け入れることができたらよかったのに.

私が最終的に使用するコードは次のとおりです。

$m = 0;
echo"<table>";
    for($y=1;$y<4;$y++){
        echo"<tr><td>
        <input id='".(1 + ($m*3))."' secondaryId='$y' >
        <input id='".(2 + ($m*3))."' secondaryId='$y' >
        <input id='".(3 + ($m*3))."' secondaryId='$y' >
        </td></tr>";
        $m++;
    }
echo"</table>";

4

4 に答える 4

0

「エコーされた目標」の場合、for ループを 1 つだけ使用するだけで十分な場合があります。「id」属性には反復変数が含まれ、$i「secondaryId」属性には次が含まれます($i div 3) + 1

for ($i=1; $i <= $max; $i++) {
    printf('<td><input id="%d" secondaryId="%d" ></td>', $i, ($i/3)+1);
}

問題は、1 つの変数 ($i) のみをインクリメントし、$i が特定の制限を超えた場合 (この場合は 3 ステップごと) にのみ別の値をインクリメントさせることです。

コード全体は次のようになります。

<table>
    <tr>
    <?php
        for ($i=1; $i <= $max; $i++) {
            printf('<td><input id="%d" secondaryId="%d" ></td>', $i, ($i/3)+1);
            if ($i % 3 == 0) { // boundary reached
                echo "</tr><tr>";
        }
    </tr>
</table>

要点を理解していただければ幸いです。

于 2013-06-08T11:24:47.753 に答える
0

あなたはこれを試してみるべきです:-

<?php
echo"<table>";
$ids = 1;
for ($t=1;$t<4;$t++)
{
    echo"<tr>";
    for($y=1;$y<4;$y++)
    {
        echo"<td><input id='$ids' secondaryId='$t'></td>";
        $ids++;
    }
    echo"</tr>";
}
echo"</table>";
?>
于 2013-06-08T11:33:02.983 に答える
0

最初の入力 ID をリセットする必要はありません。例えば

echo"<table>";
$inputId = 1;
for ($t=1;$t<4;$t++){
    echo"<tr>";
    for($y=1;$y<4;$y++){
        echo"<td><input id='$inputId' secondaryId='$y'></td>";
        $inputId++;
    }
    echo"</tr>";
}
echo"</table>";
于 2013-06-08T11:34:48.193 に答える