zhuanzhou
zhuanzhou

Reputation: 2443

add div to the foreach loop?

<?php foreach ($fields as $id => $field): ?>
<div class="<?php print $field->class; ?>">
 <?php print $field->content; ?>
 </div>
<?php endforeach; ?>

the loop's result is as the following,

   <div class="1">.....</div>
   <div class="2">.....</div>
   <div class="3">.....</div>
   <div class="4">.....</div>


   <div class="1">.....</div>
   <div class="2">.....</div>
   <div class="3">.....</div>
   <div class="4">.....</div>

   <div class="1">.....</div>
   <div class="2">.....</div>
   <div class="3">.....</div>
   <div class="4">.....</div>

i want to group the first <div> like this.

    <div class="group">
   <div class="1">.....</div>
   <div class="2">.....</div>
   <div class="3">.....</div>
   </div>
  <div class="4">.....</div>

how to make the foreach

Upvotes: 2

Views: 6298

Answers (3)

JohnP
JohnP

Reputation: 50019

If your $field->class variable always ranges from 1 to 4, you can do the following. Otherwise you need to use a manual counter.

<?php foreach ($fields as $id => $field): ?>
    <?php if ($field->class == 1) :?> <div class="group"> <?php endif; ?>
    <div class="<?php print $field->class; ?>">
      <?php print $field->content; ?>
    </div>
    <?php if ($field->class == 4) :?> </div> <?php endif; ?>
<?php endforeach; ?>

Custom Counter

<?php $counter = 0; ?>
<?php foreach ($fields as $id => $field): $counter++;?>
    <?php if ($counter == 1) :?> <div class="group"> <?php endif; ?>
    <div class="<?php print $field->class; ?>">
      <?php print $field->content; ?>
    </div>
    <?php if ($counter == 4) : $counter = 1?> 
        </div> 
    <?php endif; ?>
<?php endforeach; ?>

Upvotes: 1

xkeshav
xkeshav

Reputation: 54016

try (raw code)

<div class="group">
<?php $c=0; foreach ($fields as $id => $field) : ?>
<?php if($c%3==0) : ?> </div><div class="group"><?php endif; ?>
        <div class="<?php print $field->class; ?>">
           <?php print $field->content; ?>
       </div>
<?php $c++; endforeach; ?>
</div>

Upvotes: 1

S L
S L

Reputation: 14318

should be similar, just use foreach instead of for

<style>
    .group{
        background: red;
        margin-top: 10px;
        float: left;
        }
</style>
<?php $count=0; ?>
    <?php for($i=0; $i<= 20; $i++): ?>
    <?php if($count == 0): ?>
        <div class="group">
    <?php endif; ?>
        <?php $count++ ?>
        <div class="<?php echo $i; ?>"><?php echo $i; ?></div>
    <?php if($count == 4): ?>
        <?php $count=0; ?>
        </div>
    <?php endif; ?>
<?php endfor; ?>

Upvotes: 2

Related Questions