0

我试图在我的 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>
4

3 回答 3

1

У你可以尝试这样的事情:

<?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 选择器。

于 2012-11-16T07:42:34.563 回答
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
    }
}

您也可以事先计算数组中的元素,并在循环内有一个计数器,每轮递增一次,这样您就可以判断您是否在最后。

于 2012-11-16T07:34:46.727 回答
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 的最后一个数组。

于 2012-11-16T07:36:26.330 回答