This question already has an answer here:
I have a simple array, for example:
$array = [val-1, val-2, val-3, val-4, val-5 val-6, etc]
I want to pass it through foreach loop, but inside that loop I want another loop to group results by 4. That's for placing them into col-md-3 div inside a row div. Please tell me if it's possible and how to implement it. This is what I want:
<div class="row">
<div class="col-md-3">Value 1</div>
<div class="col-md-3">Value 2</div>
<div class="col-md-3">Value 3</div>
<div class="col-md-3">Value 4</div>
</div>
<div class="row">
<div class="col-md-3">Value 5</div>
<div class="col-md-3">Value 6</div>
<div class="col-md-3">Value 7</div>
<div class="col-md-3">Value 8</div>
</div>
etc.
Thanks.
</div>
The one solution that I can think of is manually breaking the array into sets of four by looping. See the code below:
$array = ['val-1', 'val-2', 'val-3', 'val-4', 'val-5', 'val-6', 'val-7', 'val-8'];
$result = array();
$temp = array();
$i = 1;
foreach ($array as $elem) {
array_push($temp, $elem);
if (($i % 4) == 0) {
array_push($result, $temp);
$temp = array();
}
$i++;
}
echo "<pre>"; print_r($result);
Hope this helps.
Assuming that you're always going to have 4 columns, you need to do some maths on your array. Something like the following should work:
$arr = [ 'val1', 'val2', 'val3', 'val4', 'val5', 'val6', 'val7', 'val8' ];
$cols = 4;
$rows = ceil( count($arr) / $cols );
for( $r = 0; $r < $rows; $r++ )
{
echo '<div class="row">';
for( $c = 0; $c < $cols; $c++ )
{
echo "
\t".'<div class="col-md-'.(12 / $cols).'">'.$arr[($r * $cols) + $c].'</div>';
}
echo "
".'</div>';
}
This code produces the following output:
<div class="row">
<div class="col-md-3">val1</div>
<div class="col-md-3">val2</div>
<div class="col-md-3">val3</div>
<div class="col-md-3">val4</div>
</div>
<div class="row">
<div class="col-md-3">val5</div>
<div class="col-md-3">val6</div>
<div class="col-md-3">val7</div>
<div class="col-md-3">val8</div>
</div>