PHP-цикл: добавьте div вокруг каждого трех элементов синтаксиса

Я использую цикл в wordpress для вывода сообщений. Я хочу обернуть каждые три записи внутри div. Я хочу использовать счетчик для увеличения на каждой итерации цикла, но я не уверен в синтаксисе, который говорит «если $ i кратно 3» или «если $ i кратно 3 – 1».

$i = 1; if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); // If is the first post, third post etc. if("$i is a multiple of 3-1") {echo '<div>';} // post stuff... // if is the 3rd post, 6th post etc if("$i is a multiple of 3") {echo '</div>';} $i++; endwhile; endif; 

Как это сделать? благодаря!

Почему бы не сделать следующее? Это откроет его и закроет после третьего сообщения. Затем закройте конец div в случае, если на дисплее не будет отображаться несколько цифр.

 $i = 1; //added before to ensure it gets opened echo '<div>'; if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) : $wp_query->the_post(); // post stuff... // if multiple of 3 close div and open a new div if($i % 3 == 0) {echo '</div><div>';} $i++; endwhile; endif; //make sure open div is closed echo '</div>'; 

Если вы не знаете, % – оператор modus вернет остаток после того, как будут разделены две цифры.

Используйте оператор модуля :

 if ( $i % 3 == 0 ) 

В коде вы можете использовать:

 if($i % 3 == 2) {echo '<div>';} 

а также

 if($i % 3 == 0) {echo '</div>';} 

если вам не нужен дополнительный div, вы можете использовать это:

  $i = 0; $post_count = $wp_query->found_posts; if ( $wp_query->have_posts() ) : while ( $wp_query->have_posts() ) :$wp_query->the_post(); // If is the first post, third post etc. ( ($i%3) == 0 ) ? echo '<div>' : echo ''; // post stuff... // if is the 3rd post, 6th post etc or after the last element ( $i == ($post_count - 1) || (++$i%3) == 0 ) ? echo '</div>' : echo ''; endwhile; endif;