Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在php中添加一个计数器以每4列分隔一行_Php_Twitter Bootstrap_Row_Counter - Fatal编程技术网

需要在php中添加一个计数器以每4列分隔一行

需要在php中添加一个计数器以每4列分隔一行,php,twitter-bootstrap,row,counter,Php,Twitter Bootstrap,Row,Counter,我有这个代码,我需要每4个帖子关闭一行。每个帖子都在一个div中。我尝试了一些东西,但无法实现我的代码 <?php echo "<div class='row'>"; global $post; $all_events = tribe_get_events( array( 'eventDisplay'=>'upcoming', //'posts_per_page'=>10

我有这个代码,我需要每4个帖子关闭一行。每个帖子都在一个div中。我尝试了一些东西,但无法实现我的代码

    <?php
    echo "<div class='row'>";
    global $post;
    $all_events = tribe_get_events(
        array(
            'eventDisplay'=>'upcoming',
            //'posts_per_page'=>10,
    )
    );

    foreach($all_events as $post) {
    setup_postdata($post);
    ?>

    <div class="col-sm-3">
        <span class="event-date"><?php echo tribe_get_start_date($post->ID, true, 'j M'); ?></span>
        <h3><?php the_title(); ?></h3>
        <?php if ( has_post_thumbnail() ) { ?>
            <div class="event-thumb">
                <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
            </div>
            <div class="event-excerpt">
                <?php the_excerpt(); ?>
            </div>
        <?php } else { ?>
            <div class="event-content">
                <?php the_content(); ?>
            </div>
        <?php } ?>

    </div>

<?php } //endforeach ?>
<?php wp_reset_query(); ?>
您需要。它的工作原理如下:

$i == 0;
foreach($some_array as $some_value){
    if ($i % $number_to_divide_by == 0) {
        // do something here every nth time
    }
    $i++;
}

实际上,我会100%用CSS解决这个问题,所以您不需要在PHP代码中进行任何计数或处理

看一看

float:left
将导致单个元素彼此跟随(左对齐)。
clear:left
在每个
4*n+1
-第th个元素(
n个子元素(4n+1)
)将清除此项,基本上强制换行

对此有一个警告:如果一行中没有容纳所有4个条目的空间,那么最终会出现额外的包装,这可以通过为容器定义固定的
宽度来避免


PHP的简化代码版本只需计算写入的字段,并根据需要添加换行符:

$i = 1;                        // counter
foreach ($events as $event) {  // iterate over all events
    if ($i++ % 4 == 0)         // a % b will be 0 for 4, 8, etc.
        echo '<br />';         // print the line break using whatever HTML you see fit.
    print_event($event);       // print the actual event
}
$i=1;//柜台
foreach($events as$event){//迭代所有事件
如果($i++%4==0)//a%b对于4、8等将是0。
echo“
”;//使用您认为合适的HTML打印换行符。 打印事件($event);//打印实际事件 }

您可能会问我是否在实际打印事件之前检查换行符:这是为了防止在条目数为4的倍数时出现额外的换行符,也就是说,我避免有一个空的尾随行。

所以您基本上想要一个每四个条目包装一次的列表?我知道,但是我的代码中的实现有问题。
$i = 1;                        // counter
foreach ($events as $event) {  // iterate over all events
    if ($i++ % 4 == 0)         // a % b will be 0 for 4, 8, etc.
        echo '<br />';         // print the line break using whatever HTML you see fit.
    print_event($event);       // print the actual event
}