根据元素数量更改列大小

So I'm working on a HTML carousel using Twitter Bootstrap, Wordpress and ACF Fields.

This carousel shows 2 items per row. Each of these items has a class of "col-md-6". So by showing 2 items per row, the total is 2 columns of "col-md-6" (which is perfect since this completes the 12 columns required by Bootstrap):

Here is my code:

<?php if (have_rows('columns_carousel_slide')) { 
$count = 0; ?>

<div class="item active"><div class="row">

<?php while(have_rows('columns_carousel_slide')) {
the_row();
if ($count > 0 && (($count % 2) == 0)) {
?>

</div> <!--.item -->
</div> <!--.row -->

<div class="item">
<div class="row">

<?php } ?>

  <div class="col-md-6"> 

        <h2><?php the_sub_field('columns_carousel_slide_title'); ?></h2>

  </div> <!--.col-md-6 -->

<?php $count++; } ?>

</div> <!--.item -->
</div> <!--.row -->

<?php } ?>

However, I would like to know if there's a way to detect if there's 1 item per row and if so, then show a "col-md-12" instead of a "col-md-6" in order to fill in the remaining space of not having 2 items.

Any ideas are welcome.

Thanks!

--

Edit: As suggested by Jakub, I've updated my code to the following:

<?php if (have_rows('columns_carousel_slide')) { 
$count = 0; ?>

<div class="item active"><div class="row">

<?php 
$multiplier = 1; //that could actually go before the while
if (count(get_field('columns_carousel_slide'))%2 === 1 && 
    $count === count(get_field('columns_carousel_slide'))-1) {
        $multiplier = 2;
} ?>

<?php while(have_rows('columns_carousel_slide')) {
the_row();
if ($count > 0 && (($count % 2) == 0)) {
?>

</div> <!--.item -->
</div> <!--.row -->

<div class="item">
<div class="row">

<?php } ?>

  <div class="col-md-<?php echo (6*$multiplier);?>"> 

        <h2><?php the_sub_field('columns_carousel_slide_title'); ?></h2>

  </div> <!--.col-md-6 -->

<?php $count++; } ?>

</div> <!--.item -->
</div> <!--.row -->

<?php } ?>

However, I think I've must have missed something because I am getting total of "col-md-12" for all the rows.

Assuming that "get_field" returns the array with all rows, then you would need to change the following:

<div class="col-md-6"> 
    <h2><?php the_sub_field('columns_carousel_slide_title'); ?></h2>
</div> <!--.col-md-6 -->

with this:

<?php 
$multiplier = 1; //that could actually go before the while
if (count(get_field('columns_carousel_slide'))%2 === 1 && 
    $count === count(get_field('columns_carousel_slide'))-1) {
        $multiplier = 2;
} ?>
<div class="col-md-<?php echo (6*$multiplier);?>">     
    <h2><?php the_sub_field('columns_carousel_slide_title'); ?></h2>
</div> <!--.col-md-12 -->

A short explanation:

  1. initially we set the multiplier to 1 (so that 6*1 = 6 for paired columns).
  2. we do a condition to check if number of items is even and we are currently processing the last item. If so - we set the multiplier to 2 (so that 6*2 = 12 for single column)
  3. we set the class to be "col-md-" and the result of our calculation (either 6 or 12)