2017-05-05 1 views
0

Ich habe 2 Schleifen innere Schleife & Outer Loop.Run Inner Loop nach jeder 3. Iteration der äußeren Schleife

Wenn die äußere Schleife die dritte Iteration erreicht, sollte die innere Schleife ausgeführt werden. und ich mag das.

<?php 
     foreach($this->posts as $post){ 
?> 
      <div id="post"> 
      </div> 
      <?php 
       foreach($this->domain_ads as $ads) { 
         if($i%3==0){ 
      ?> 
          <div id="ads"> 
          </div> 
      <?php  } 
       } ?> 
<?php 
     } 
?> 

und die Ergebnisse sind wie dieses

enter image description here

Problem:

Das Problem ist, dass innere Schleife alle Ergebnisse nach dem 3. Iteration zeigt. Aber ich möchte nur ein Ergebnis der inneren Schleife zeigen, und dann sollte das zweite Ergebnis der inneren Schleife nach den nächsten 3 Iterationen der äußeren Schleife angezeigt werden.

Wie kann ich dieses Problem lösen?

+1

Verwenden Sie einfache '$ this-> domain_ads [0]' insted foreach? –

Antwort

1

Einfache Lösung:

<?php 
$i = 0; 
// counter for ads 
$ad_counter = 0; 
foreach($this->posts as $post) {?> 
<div id="post"></div> 
<?php 
    $i++; 
    // check if it is time to show ad 
    // and if you have ad with `$ad_counter` 
    if ($i % 3 == 0 && isset($this->domain_ads[$ad_counter])) {?> 
     <div id="ads"><?php echo $this->domain_ads[$ad_counter]['name'];?>></div> 
<?php // increase `$ad_counter` so as to move to next ad 
     $ad_counter++; 
    } 
} 
0
$i = 1; 
for($a = 0; $a<=10; $a++){ //your first foreach loop 
    echo "abc<br />"; //you div 
    if($i%3==0){ //check condition 
     for($b=0; $b<2;$b++){ //your inner foreach loop 
      echo "xyz<br />"; //inner loop content 
     } //end inner loop 
    } //end if condition 
    $i++; 
} //end outer foreach 

Hoffnung dies helfen wird, Demo

Verwandte Themen