1

だから私は PHP を使用して、div 要素を開くか閉じる必要がある n 番目のループの基準でいくつかのコンテンツを生成しようとしています。したがって、私の目標は、ページに 8 つの要素を表示し、9 番目の要素に表示することです。8 番目の要素の div を閉じ、9 番目の要素に画像があれば新しいものを開きたいと思います。これが私のコードです。

$images; // object
$i = 1;

echo '<div class="outer-container">';

while ( $images->have_images() ) {

     if ( $i === 1 ) {
          echo '<div class="inner-container">';
     }

     echo 'content here';

     if ( $i === 8 || $images->total === $images->current + 1 ) {
          echo '</div><!--.inner-container-->';
     }

     $i++;
}

echo '</div><!--.outer-container-->';

最終結果は次のようになります。

<div class="outer-container">

<div class="inner-container">
    content here
    content here
    content here
    content here
    content here
    content here
    content here
    content here
</div><!--.inner-container-->

<div class="inner-container">
    content here
    content here
    content here
</div><!--.inner-container-->

</div><!--.outer-container-->

私は周りを検索し、おそらくモジュラスを使用する必要があるという結論に達しましたが、それをコードに組み込む方法がわかりません。

ご覧いただきありがとうございます。

4

3 に答える 3

1

モジュラスは確かにあなたが探しているものです:

if ( $i % 8 === 0 ) {
    echo '</div><!--.container-->';
}
于 2013-09-16T23:39:16.233 に答える
1
if ( $i % 8 == 0) {
      echo '</div><!--.container--><div class="container">';
}

Mod 演算子は剰余を返します。$i % 8または$i % 8 == 0または単に述べることができます$i % 8 === 0 as john stated

ただし、これをどのように構成するかによっては、条件の次の div も開く必要があります。例:

<div class="outer-container">
    <div class="inner-container">
        <?php
        $images; // object
        $i = 1;

        while ( $images->have_images() ) {

             echo 'content here';
             //print_r($i % 8);
             if ( $i % 8 == 0 && $images->total > 8) {
                  echo '</div><!--.inner-container--><div class="inner-container">';
             }

             $i++;
        }
        ?>
    </div>
</div>

画像の合計がたまたま 8 になった場合の条件を追加しました。不正な空の div は作成されません。

私はあなたのコメントを理解しようとしています。外側のコンテナー、次に内側のコンテナーがあり、この内側のコンテナー内に、質問で定義した 8 つの各グループがcontainerdiv に含まれるループが必要だと言っていますか?

$i が意図したとおりに動作していることを確認するために、コメントを解除できるループに print r を追加しました。このコードと $i が 1 で始まるという事実により、時期尚早に終了 div 条件が発生することはありません。

于 2013-09-16T23:39:26.717 に答える
1

新しい div を開くのを忘れました

次のコードを変更します。

if ( $i === 8 || $images->total === $images->current + 1 ) {
    echo '</div><!--.container-->';
    echo '<div class="container">'; //ADD THIS LINE!!!
}

終了後、終了タグwhileを追加します</div>

于 2013-09-16T23:41:47.053 に答える