我正在尝试捕获CodeIgniter for循环中的最后一个循环。我正在尝试生成一个< hr />在每个新闻项目下,但最后一个。这是我的代码:
<table class="news">
<?php foreach($news as $news_item): ?>
<tr>
<td class="headline"><?php echo $news_item['title']; ?></td>
</tr>
<tr>
<td class="text"><?php echo $news_item['text']; ?></td>
</tr>
<tr>
<td><hr /></td>
</tr>
<?php endforeach; ?>
</table>
答案 0 :(得分:1)
Уou可以尝试这样的事情:
<?php for($i = 0, $lastIDX = count($news)-1; $i<=$lastIDX; $i++): ?>
<!-- html code ... $news_item is $news[$i] now -->
<? if ($i !== $lastIDX) : ?>
<tr>
<td><hr /></td>
</tr>
<?php endif; ?>
<?php endfor; ?>
但最好使用CSS:last-child selector。
答案 1 :(得分:0)
预先获取数组的最后一个键,并在循环时将其与当前的键进行比较:
$keys = array_keys($news);
$last_key = end($keys);
foreach ($news as $news_key => $news_item) {
if ($news_key == $last_key) {
// at the last item
} else {
// not at the last item
}
}
你也可以预先计算数组中的元素,并在循环中有一个计数器,每一轮都会增加,所以你可以判断你是否在最后。
答案 2 :(得分:0)
您可以将此作为解决方案使用:
$last = end($news);
<table class="news">
<?php foreach($news as $news_item): ?>
<tr>
<td class="headline"><?php echo $news_item['title']; ?></td>
</tr>
<tr>
<td class="text"><?php echo $news_item['text']; ?></td>
</tr>
<tr>
<td><?=(($last == $news_item)?"":"<hr />")?></td>
</tr>
<?php endforeach; ?>
</table>
$ last是数组XD的最后一个数组。