2014-11-04 3 views
0

일련의 항목을 출력하는 PHP foreach 루프가 있습니다.PHP foreach 루프 마크 업

내가 달성하고 싶은 것은 1 & 2의 항목을 감싸고 마지막 항목 인 3를 &으로 감싼 코드입니다. 여기

는 PHP입니다 :

내가 이것을 얻을 수있는 방법에 대한 아이디어
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> 

     <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> 
     <span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span> 
     <div class="clearfix"></div> 
     </div> 

     <?php $counter++; endforeach; ?> 

?

미리 감사드립니다.

+0

그래서 컨테이너 DIV가 2 개의 'extraField' 항목을 모두 래핑하려고한다고 하시겠습니까? – prodigitalson

+0

@prodigitalson이 위에 질문 한 내용이나 '1'','2'','3'' 및'last' item wrapped가 필요합니까? – Lodder

+0

다음이 필요합니다.

item 1, item 2
item3 - last item (could be anything from 4 to 14)
user2713512

답변

1

어쩌면 이런 식으로 내 PHP를 조금 녹스는 용서해주십시오. 마지막 검사가 len + 1을 수 있습니다 당신의 처음 3 수표가 될 수 있도록

<?php foreach ($this->item->extra_fields as $key=>$extraField): ?> 

<?php 
    $len = count($this->item->extra_fields); 
    if ($key == 1 || $key == 2 || $key == 3 || $key == len) { 
     echo "<div>"; 
    } 
?> 

    <div class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>"> 

    <span class="itemExtraFieldsValue"><?php echo JHTML::_('content.prepare', $extraField->value); ?></span> 

    <div class="clearfix"></div> 

    </div> 

<?php 
    if ($key == 1 || $key == 2 || $key == 3 || $key == len) { 
     echo "</div>" ; 
    } 
?>  

<?php $counter++; endforeach; ?> 

는,리스트의 길이를 설명 할 수 있음 (0, 1, 2), 그것은 무엇을 $ 키 값에 따라 달라집니다 입니다.

코드의 $counter++ 부분이 foreach에서하는 일이 다소 혼란 스럽습니다. 아마 모듈 대신에 키를 사용해야합니다.

코드 스 니펫이 불완전한 것으로 판단되면 솔루션을 코딩하는 것이 어렵지만, 우리가 반복하고있는 데이터와 첫 번째 3 개를 갖는 의도 한 결과를 알고 있으면 도움이됩니다. div에있는 마지막 항목.