Reputation: 497
I'm trying to add some custom classes based on the number of results of each wrapping block.
last
on the last of each wrapping block.one-half
one-third
one-fourth
Here is the code:
<?php
$array = range(1, 11);
$i= 0;
foreach ($array as $val) {
if ($i%4 == 0) echo '<div class="item">';
$i++;
?>
<span class="one-fourth"><?=$val?></span>
<?php
if ($i%4 == 0) echo '</div>';
}
if ($i%4 != 0) echo '</div>';
?>
Output I get:
<div class="item">
<span class="one-fourth">1</span>
<span class="one-fourth">2</span>
<span class="one-fourth">3</span>
<span class="one-fourth">4</span>
</div>
<div class="item">
<span class="one-fourth">5</span>
<span class="one-fourth">6</span>
<span class="one-fourth">7</span>
<span class="one-fourth">8</span>
</div>
<div class="item">
<span class="one-fourth">9</span>
<span class="one-fourth">10</span>
<span class="one-fourth">11</span>
</div>
Output I want:
<div class="item">
<span class="one-fourth">1</span>
<span class="one-fourth">2</span>
<span class="one-fourth">3</span>
<span class="one-fourth last">4</span>
</div>
<div class="item">
<span class="one-fourth">5</span>
<span class="one-fourth">6</span>
<span class="one-fourth">7</span>
<span class="one-fourth last">8</span>
</div>
<div class="item">
<span class="one-third">9</span>
<span class="one-third">10</span>
<span class="one-third last">11</span>
</div>
Upvotes: 0
Views: 433
Reputation: 147166
This is probably most easily done by splitting the array into chunks and processing each chunk individually in a loop, using the count
of the chunk to decide which class to add to the spans:
$array = range(1, 11);
$chunks = array_chunk($array, 4);
$span_classes = ['', 'one-half', 'one-third', 'one-fourth'];
foreach ($chunks as $chunk) {
echo "<div class=\"item\">\n";
$count = count($chunk);
$span_class = $span_classes[$count-1];
for ($i = 0; $i < $count; $i++) {
$last = $i == $count - 1 ? ' last' : '';
$val = $chunk[$i];
echo "<span class=\"$span_class$last\">$val</span>\n";
}
echo "</div>\n";
}
Output:
<div class="item">
<span class="one-fourth">1</span>
<span class="one-fourth">2</span>
<span class="one-fourth">3</span>
<span class="one-fourth last">4</span>
</div>
<div class="item">
<span class="one-fourth">5</span>
<span class="one-fourth">6</span>
<span class="one-fourth">7</span>
<span class="one-fourth last">8</span>
</div>
<div class="item">
<span class="one-third">9</span>
<span class="one-third">10</span>
<span class="one-third last">11</span>
</div>
Upvotes: 2