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

У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セレクターを使用することをお勧めします。

于 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 に答える