2017-05-05 7 views
0

私は2つのループを持っています。内側ループ&外側ループ。外側ループの各3回目の繰り返しの後に内側ループを実行

外部ループが3番目の反復に達すると、内部ループが実行されます。私はこれが好きです。

<?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 
     } 
?> 

、その結果がこの

enter image description here

問題のようなものです:

問題は内部ループは第三反復の後、すべての結果を示しているということです。しかし、私はインナーループの結果を1つだけ表示したいので、インナーループの2番目の結果は、次の3回のアウターループの繰り返しの後に表示する必要があります。

どうすればこの問題を解決できますか?

+1

使用シンプル 'ます$ this-> domain_adsを助ける希望が[0]' foreachののinsted? –

答えて

1

シンプルなソリューション:

<?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 

これは Demo

関連する問題