2015-11-27 67 views
0

在這裏,我有一個foreach循環經歷客戶端可查看的日期日曆。在第一個循環中,我將$ i作爲一個變量等於0.然後,我給出規則說明如果$ i等於0或可以被3整除然後回顯div類組。但是,如果循環在$ i等於1時退出,或者被2整除以關閉類組並繼續向下。出於某種原因,當我有1或2個條目時,該組無法正確關閉,並且內部捕獲了以下div。請你看看這個代碼,看看我在哪裏搞亂...Foreach循環回波組錯誤

<div class = "calender_dates"> 
<div class = 'calender_select'> 
    <div class = 'dates past active'></div> 
    <div class = "dates future"></div> 
</div> 
<div class = "past_events grid-calender"> 
    <?php $i=0 ?> 
@foreach($past as $event) 
<?php if($i==0 OR is_int($i/3)){ 
     if($i==0){ 
      echo '<div class="group_loop_first">'; 
     } else{ 
      echo '<div class="group_loop">'; 
     } 

       } ?> 
    <div class = "p_date grid-date"> 
     <div class = 'date_head'> 
      <div class = "head_img"> 
       <p>img</p> 
      </div> 
      <div class = "head_description"> 
       <p>{{$event->caption}}</p> 
      </div> 
     </div> 
     <div class = "date_foot"> 
      <div class = "foot_date"> 
       <p class = "day"> 
        {{$event->publish_at->format('d')}} 
       </p> 


       <p class = "month"> 
        {{$event->publish_at->format('M')}} 
       </p> 
      </div> 
      <div class = "foot_callout"> 
       <p class = "name">{{$event->name}}</p> 
       <p>{{$event->address}}</p> 
      </div> 
     </div> 
    </div> 
    <?php $i++ ?> 
    <?php if($i==0 OR is_int($i/3)){ 
      echo '</div>'; 
     }?> 
    @endforeach 
    <?php 
     if($i==1 OR $i==2 OR is_int($i/2)){ 
       echo '</div>'; 
      }?> 
</div> 

<div class = "future_events grid-calender"> 
    <?php $i=0 ?> 
@foreach($future as $event) 
<?php if($i==0 OR is_int($i/3)){ 
        echo '<div class="group_loop">'; 
       } ?> 
    <div class = "p_date grid-date"> 
     <div class = 'date_head'> 
      <div class = "head_img"> 
       <p>img</p> 
      </div> 
      <div class = "head_description"> 
       <p>{{$event->caption}}</p> 
      </div> 
     </div> 
     <div class = "date_foot"> 
      <div class = "foot_date"> 
        <p class = "day"> 
         {{$event->publish_at->format('d')}} 
        </p> 


        <p class = "month"> 
         {{$event->publish_at->format('M')}} 
        </p> 
      </div> 
      <div class = "foot_callout"> 
       <p class = "name">{{$event->name}}</p> 
       <p>{{$event->address}}</p> 
      </div> 
     </div> 
    </div> 
    <?php $i++ ?> 
    <?php if($i==0 OR is_int($i/3)){ 
       echo '</div>'; 
      }?> 
    @endforeach 
    <?php 
    if($i==1 OR is_int($i/2)){ 
      echo '</div>'; 
     }?> 
    </div> 
+0

這應該是在PHP標籤? '<?php @foreach($ past as $ event){?>''相同於<?php @endforeach?>'? – Steve

+0

<?php @endforeach; }?>對不起,我編輯評論太慢了!注意缺少'{}'和';' – Steve

+1

要檢查'$ i'是否可以被2整除,使用'$ i%2 == 0',並且類似地檢查'$ i'是否可以被3整除或不是,使用'$ i%3 == 0'。 –

回答

1

你遇到問題,因爲你過早地增加你的櫃檯。下面的代碼被清理了一下,但基本的想法是,在檢查是否需要關閉div標記之前,您不應該增加計數器。

<div class="past_events grid-calender"> 
    <?php $i = 0; ?> 
    @foreach($past as $event) 
     @if ($i == 0) 
    <div class="group_loop_first"> 
     @elseif ($i % 3 === 0) 
    <div class="group_loop"> 
     @endif 
     <div class = "p_date grid-date"> 
      <!-- rest of html --> 
     </div> 

     @if ($i % 3 === 0) 
    </div> 
     @endif 
     <?php $i++; ?> 
    @endforeach 
</div> 

<div class="future_events grid-calender"> 
    <?php $i = 0; ?> 
    @foreach($future as $event) 
     @if ($i % 3 === 0) 
    <div class="group_loop"> 
     @endif 
     <div class = "p_date grid-date"> 
      <!-- rest of html --> 
     </div> 
     @if ($i % 3 === 0) 
    </div> 
     @endif 
     <?php $i++; ?> 
    @endforeach 
</div> 
+0

感謝您的清理!我不確定在刀片模板上的東西。 –