0

配列をループしようとしていますが、3ループごとに新しい行が作成されますが、それを機能させるのに問題があります。現在、私のコードは次のようになっています。

<li class="row">
        <?php for ($i = 0; $i < count($results); $i++) : ?>
                <div class="grid_8">
                    <div class="candidate <?php if ($i % 3 == 2) echo "end"; ?>">
                        <div class="model_image shadow_50"></div>
                        <dl>
                            <dt><?php echo $results[$i]['first_name']; ?> <?php echo $results[$i]['surname']; ?></dt>
                            <dd>
                                <?php echo $results[$i]['talent']; ?>
                                <ul>
                                    <li><?php echo anchor("/candidates/card/" . strtolower($results[$i]['first_name']) . "-" . strtolower($results[$i]['surname']), "View Details", array('class' => 'details')); ?></li>
                                    <li><?php echo anchor("/candidates/card/" . strtolower($results[$i]['first_name']) . "-" . strtolower($results[$i]['surname']), "View Showreel", array('class' => 'showreel')); ?></li>
                                    <li><?php echo anchor("/candidates/card/" . strtolower($results[$i]['first_name']) . "-" . strtolower($results[$i]['surname']), "Shortlist", array('class' => 'shortlist')); ?></li>
                                </ul>
                            </dd>
                        </dl>
                    </div>
                </div>
            <?php if ($i % 3 == 3) : ?>
                 </li><li class="row">   
            <?php endif; ?>
        <?php endfor; ?>

ただし、これは1つの行を作成し、その中にすべての結果が含まれますが、行のクラスを含む1 li、次に3つの.grid_8 div、次に別の行を作成する必要があります。

どこが間違っているのですか?

4

4 に答える 4

3

問題は、モジュラス方程式です。残りは3に達することはなく、(0,1,2,0,1,2,0,1,2)のパターンになります。したがって、2に等しくなるように変更します。

        if ($i % 3 == 2)
于 2011-10-17T11:32:48.370 に答える
0

カウンターを使用してループ内の行ごとの位置を追跡すると、作業が簡単になる場合があります。

$count = 0;
for ($i = 0; $i < count($results); $i++) {
    if ($count == 0) {
        echo "<li class=\"row\">";
    }

    echo "all your middle stuff";
    $count++;

    if ($count == 4) {
        echo "</li>";
        $count = 0;
    }
}

//just make sure we dont need to add a /li
if ($count % 3 != 0) 
    echo "</li>
于 2011-10-17T11:33:17.730 に答える
0

私はあなたが囲んでいると推測することができるだけです

    あなたが私たちに見せていないところ。それにもかかわらず、ファイナルが欠落しているように見えるため、ブラウザが混乱します。

    于 2011-10-17T11:33:23.850 に答える
    0

    このようにすることはできませんif ($i % 3 == 3)-$i % 3常に範囲内にあります0..2。多分あなたif ($i % 3 == 0)-それは「3分の1$iごと」になります

    于 2011-10-17T11:34:08.537 に答える