2014-10-14 4 views
0

동적으로로드 된 내용을 저장하는 테이블을 사용하고 있습니다. 그것은 반응하는 예약 양식을위한 것입니다. 내가 뭘 하려는지 모바일 버전이 화면에 맞게 순서에 5 개 이상의 열이있는 경우 각 테이블 행을 두 개로 나눕니다.PHP foreach 브레이크 테이블

이것은 내가 이미 가지고있는 것을 확장함으로써 성취 될 수 있다고 확신하지만, 작동시키지는 못합니다. 그때, 5 개 루프 후 각 행 tr에 대한 루프를 중단 아래에 새 행을 추가해야 할 것

<table> 
    <tr> 
     <?php foreach ($hostel->getAvailableDates() as $date): ?> 
     <th><?php echo $date->getDayOfTheWeek(); ?></th> 
     <?php endforeach ?> 
    </tr> 
    <tr> 
     <?php foreach ($hostel->getAvailableDates() as $date): ?>  
     <td> 
     <?php if($date->getAvailable()) { ?>    
      <b class="avail tick">Available</b> 
     <?php } else { ?> 
      <b class="avail cross">Unavailable</b> 
     <?php }?> 
     </td> 
     <?php endforeach ?> 
    </tr> 
</table> 

:

여기에 내 현재 코드입니다. 나는 실험 해왔다

$max_loop = 5; 
$count = 0; 

그러나 지금까지 운이 없다.

답변

0

: getAvailableDates에 의해 반환되는 값이 배열 인 경우

<?php 
$availDates = array(); 
foreach ($hostel->getAvailableDates() as $date) { 
    $availDates[] = $date; 
} 
$maxCols = 5; 
$chunked = array_chunk($availDates, $maxCols); 
?> 
<table> 
    <?php 
    foreach ($chunked as $chunk) { 
     ?><tr> 
     <?php foreach ($chunk as $date): ?> 
     <th><?php echo $date->getDayOfTheWeek(); ?></th> 
     <?php endforeach; ?> 
    </tr> 
    <tr> 
     <?php foreach ($chunk as $date): ?>  
     <td> 
     <?php if($date->getAvailable()) { ?>    
      <b class="avail tick">Available</b> 
     <?php } else { ?> 
      <b class="avail cross">Unavailable</b> 
     <?php }?> 
     </td> 
     <?php endforeach; ?> 
    </tr><?php 

    } 
    ?> 
</table> 
+0

감사합니다. 이것은 내 필요에 완벽하게 부합했습니다. –

0

mod 연산자를 살펴보십시오. 그것은 당신에게 필요한 것을 제공해야합니다.

경우 ($ 카운트 %의 $의하여 max_loop == 0) 내가 데이터를 재구성하는 것을 선호

0

, 대신의 루프를 사용할 수 있습니다 foreach 및 현재 색인이 5의 배수인지 확인하여 개수 변수를 추적하지 않아도됩니다.

0

이 정보가 도움이되기를 바랍니다. 감사.

<?php 

    $avDates = $hostel->getAvailableDates(); 
    echo "<table><tr>"; 
    foreach($avDates as $i=>$date){ { 
     if ($i == $max_loop) { 
      echo "</tr><tr>"; 
     } 
    echo "<td>".($date->getAvailable() ? '<b class="avail tick">Available</b>' : '<b class="avail cross">Unavailable</b>')."</td>"; 
    } 
    echo "</tr></table>"; 
?>