PHP 循环:在每三个项目语法周围添加一个 div
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8947878/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
PHP loop: Add a div around every three items syntax
提问by HandiworkNYC.com
I'm using a loop in wordpress to output posts. I want to wrap every three posts inside of a div. I want to use a counter to increment on each iteration of the loop but I'm not sure of the syntax that says "if $i is a multiple of 3" or "if $i is a multiple of 3 - 1".
我在 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;
How do I make this happen? thanks!
我该如何做到这一点?谢谢!
回答by kwelch
Why not do the following? This will open it and close it after the third post. Then close the ending div in the event there is not a multiple of 3 to display.
为什么不做以下事情?这将在第三个帖子后打开并关闭它。然后在没有显示 3 的倍数的情况下关闭结束的 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>';
In case you didn't know, %
is the modus operator will return the remainder after the two numbers are divided.
如果您不知道,%
modus 运算符将返回两个数字相除后的余数。
回答by George Cummins
回答by Habib
$i = 1;
$post_count=$wp_query->found_posts;
//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 && $i != $post_count) {echo '</div><div>';} elseif($i % 3 == 0 && $i == $post_count){echo '</div>';}
$i++; endwhile; endif;
回答by Mohammed Salhi
if you dont need extra div you can use this :
如果你不需要额外的 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;