对于foreach PHP中的循环[重复]

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>