2013-03-16 3 views
0

데이터가 배열 ($ rows)에 저장되었습니다. 배열을 읽고 genaroate 테이블에 foreach 함수를 사용합니다.foreach cicle에서 배열의 마지막 값을 찾습니다.

<table> 

    foreach ($rows as $row) { 
     echo "<tr>"; 
     echo "<td>" . $row['field1'] . "</td>"; 
     echo "<td>" . $row['field2'] . "</td>"; 
     echo "<td>" . $row['filed3'] . "</td>"; 
     echo "</tr>"; 
    } 

</table> 

내 목표는 표시된 마지막 줄의 TR 요소 클래스를 변경하기 위해 배열의 마지막 값 (끝)을 찾는 것입니다. 어떻게하면됩니까? 감사

답변

1

이 시도 :

foreach ($rows as $key => $row) { 
    $end = end($rows) === $row ? 'class="last"' : ''; 
    echo "<tr $end>"; 
    echo "<td>" . $row['field1'] . "</td>"; 
    echo "<td>" . $row['field2'] . "</td>"; 
    echo "<td>" . $row['filed3'] . "</td>"; 
    echo "</tr>"; 
} 

이 방법은뿐만 아니라 multidimentional 배열 작동합니다.

http://codepad.org/HQG9ytBX

편집. 주석에서 지적했듯이,이 접근법은 배열의 일부 값이 복제 된 경우 최종 결과를 트리거 할 수 있습니다. 올바른 방탄 버전은 다음과 같아야합니다

여기
foreach ($rows as $key => $row) { 
    $end = end($rows) === $row && $key === key($rows) ? 'class="last"' : ''; 

    // ... 
+0

감사를보십시오! 그것은 매우 깨끗한 코드입니다! –

+0

도와 드리겠습니다. – dfsq

+0

@YourCommonSense 가능성이 있습니까? 나는 항상이 작업을 위해'end'를 사용했으며 항상 예상대로 작동했습니다. 실패 할 때 예제를 제공 할 수 있습니까? – dfsq

1
foreach ($rows as $row) { 
$is_last_row = ++$i == count($rows); 
     echo "<tr>"; 
     echo "<td>" . $row['field1'] . "</td>"; 
     echo "<td>" . $row['field2'] . "</td>"; 
     echo "<td>" . $row['filed3'] . "</td>"; 
     echo "</tr>"; 
    } 

은 $ i가 사용되지 않은 변수가 될 것이다.

0

$numItems = count($rows); 
$i = 0; 
foreach($rows as $row) { 

$trClass = 'firstclass'; 
if(++$i === $numItems) 
{ 
$trClass = 'lastclass'; 
} 


echo "<tr class='$trclass'>"; 
    echo "<td>" . $row['field1'] . "</td>"; 
    echo "<td>" . $row['field2'] . "</td>"; 
    echo "<td>" . $row['filed3'] . "</td>"; 
    echo "</tr>"; 
} 
0
// first, let's find out the last key 
end($rows); 
$last = key($rows); 

// then just loop over 
foreach ($rows as $key => $row) { 
     if ($key == $last) { 
      // last leaf of the summer... 
     } 
     echo "<tr>"; 
     echo "<td>" . $row['field1'] . "</td>"; 
     echo "<td>" . $row['field2'] . "</td>"; 
     echo "<td>" . $row['filed3'] . "</td>"; 
     echo "</tr>"; 
} 
관련 문제