1

みなさんこんにちは!私の無知を許してください、私はphpにとても慣れていません。

PHPコードがそのように動作する理由を理解するのに苦労しています。コードは機能していますが、これらの値がエコーされる理由がわかりません。

(コードは説明のために単純化されていますが、通常は、カスタムの列数に基づいてテーブルにデータを入力してフォーマットします)

質問 * ** (コードを参照)

変数がエコーするのはなぜですか$cell(?????? QUESTION ????? を参照): 1 2 3 4 5 6 7 ? 0 1 2 3 4 5 6 // を期待していたのは、最初に割り当てられたように、開始点が $cell = 0 になると思ったからです。唯一の合理的な理由は、$cell +=$i (for ループから) から値を継承することですが、$col=2 の場合、最初のステートメントは完全にスキップされず、else ステートメントのみが実行されますか?

<?php
for ($i=1; $i <= 7 ; $i++)  {
    $cell = 0;
    echo "<tr>";

    for ($col=1; $col <= 2; $col++) {
        echo "<td>" ;
        if ($col == 1) {
            echo $cell; // echoes: 0 0 0 0 0 0 0 ----> because $cell = 0
            $cell +=$i;
            echo $cell; // echoes: 1 2 3 4 5 6 7  ----> because of  $cell +=$i;
        } else {
            echo $cell ; // echoes: 1 2 3 4 5 6 7    ?????? QUESTION ?????
            $cell +=7;
            echo $cell; // echoes: 8 9 10 11 12 13 14
        }
        echo "</td>";
    }
    echo "</tr>";
}
?>

どんな助けでも感謝します。

4

3 に答える 3

5

内側のforループの最初の繰り返しで、 when $col==1then$cellが 1 ずつインクリメントされます。 when が not$col以外の場合1(他の可能な値は2この場合のみです)、$cellbyの値は既にインクリメントされ1ているため、 ではなくなり0ます。

だからあなたは持っています:

i = 1 | $cell = 0 | $col = 1 // $cell +=$i; => $cell += 1; => $cell = 1;
i = 1 | $cell = 1 | $col = 2 // $cell += 7; => $cell = 8;
i = 2 | $cell = 0 | $col = 1 // $cell +=$i; => $cell += 2; => $cell = 2;
i = 2 | $cell = 2 | $col = 2 // $cell += 7; => $cell = 9;
// etc...
于 2012-11-15T00:30:17.383 に答える
0

$cell は決して 0 をエコーし​​ません。これは、2 番目の for ループが開始するときに $col が 1 に等しくなるためです。したがって、$cell は $cell += $i になり、常に $cell == 1 になるため、$i == 1 の場合コード開始が実行されます。この助けを願っています

于 2012-11-15T00:36:52.030 に答える
0

$cellecho 1 2 3 4 5 6 7and not0 1 2 3 4 5 6$cell2 番目の for ループでのみインクリメントされ、1 番目の for ループで 0 に戻される理由:

実際に起こることは次のとおりです。

for loop1

=> $cell = 0;// $cell はゼロに設定されます

for loop2

=> $cell += $i;// $cell は 1 ずつインクリメントされます
=> $cell += 7;// $cell は 7 ずつインクリメントされます

このシナリオでは、 $cell がゼロになるのは、最初の for ループでのみ発生するか、インクリメントの前にエコーする場合です。

于 2012-11-15T00:48:13.387 に答える