2013-03-16 51 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>"; 
} 
相关问题