CodeIgniter foreach中的最后一个循环

时间:2012-11-16 07:21:10

标签: php

我正在尝试捕获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>

3 个答案:

答案 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的最后一个数组。