2013-03-16 50 views
0

我將數據存儲在數組中($ rows)。 爲了讀取數組並使用動態表格,我使用了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>"; 
} 

此方法適用於多維數組也是如此。

http://codepad.org/HQG9ytBX

編輯。正如評論中所指出的,如果數組中的某些值重複(最後一個),則此方法可能會觸發錯誤的最終結果。正確的防彈版本應該是:

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

    // ... 
+0

謝謝!這是非常乾淨的代碼! – 2013-03-16 13:31:31

+0

我很高興幫助! – dfsq 2013-03-16 13:31:56

+0

@YourCommonSense有可能嗎?我總是用'end'完成這個任務,並且它總是按預期工作。你能舉一個例子嗎? – dfsq 2013-03-16 14:03:18

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>"; 
    } 

這裏$我應該是一個未使用的變量。

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>"; 
} 
相關問題