2012-10-19 5 views
0

foreach 루프가 있고 단일 항목의 위치를 ​​식별해야합니다. 항목은 항상 9입니다.이 코드를 사용합니다. 누군가는 더 우아한 해결책을 가지고 있습니까? 원래 위치가 필요한 경우foreach 루프의 위치 식별

<?php 
    foreach($fruit as $key => $apple); 
?> 
    <li class="<?php if(($key == 0) || ($key == 3) || ($key == 6)) echo 'first'; if(($key == 1) || ($key == 4) || ($key == 7)) echo 'middle'; if(($key == 2) || ($key == 5) || ($key == 8)) echo 'last'; ?>" 
      //stuff 
    </li> 
<?php endforeach; ?> 
+1

모듈로 당신을 제공 정수 나눗셈에서 나머지입니다 0,1,2 시작, 중간 및 끝 –

+0

안녕하세요, Tony, 예제를 게시 할 수 있습니까? 고맙습니다. – Francesco

답변

1

3의

0/3 = 0 remainder 0 
1/3 = 0 remainder 1 
2/3 = 0 remainder 2 
3/3 = 1 remainder 0 
... 
8/3 = 2 remainder 2 
1

, 당신은 가장 가능성 foreach보다는 for 루프를 사용한다. 모듈러스 연산자를 사용하여 길이 논리 문을 제거 할 수도 있습니다. PHP 내가

<?php foreach($fruit as $key => $apple); ?> 
     <?php $position = $key % 3; ?>  
    <li class="<?php if($position == 0) echo 'first'; 
        if($position == 1) echo 'middle'; 
        if($position == 2) echo 'last'; ?>" 
      //stuff 
    </li> 
<?php endforeach; ?> 

퍼센트로 조금 더 도공보다했던 언어 비록 논평 요청에 따라

<?php 
    for($i = 0; $i < count($fruit); $i++) { 
     $apple = $fruit[i]; 
     $remainder = $i % 3 
?> 

    <li class="<?php 
     if($remainder == 0) echo 'first'; 
     if($remainder == 1) echo 'middle'; 
     if($remainder == 2) echo 'last'; ?>" 

    // stuff 

    </li> 

<?php } ?> 
+0

$ fruit.length? –

관련 문제