web-dev-qa-db-ja.com

Foreachループで、ループの最後の項目をどのようにターゲットにしますか?

Foreachループを実行するには、次のコードを使用します。ループの最後のアイテムをターゲットにして(たとえば、3つのイベントをターゲットにしたい場合は3つ目のイベントをターゲットにしたい)どうすればいいの?

<?php $pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order'));
    foreach($pages as $post)
    {
    setup_postdata($post);
    $fields = get_fields();
?>
<div class="event">
    <img class="event-thumbimage" src="<?php echo $fields->thumb_image; ?>" height="120" width="140" alt="<?php echo $fields->event_title; ?>" />
    <h2><?php echo $fields->event_title; ?></h2>
    <p>
        Location: <?php echo $fields->location; ?><br />
        Start: <?php echo $fields->start_date; ?> at <?php echo $fields->start_time; ?>
        <?php $fields = get_acf(); if($fields->end_date != "") : ?>
        , End: <?php echo $fields->end_date; ?> at <?php echo $fields->end_time; ?>
        <?php else : ?>
        <?php endif; ?>
    </p>                        
    <p style="margin-bottom:0px!IMPORTANT;"><?php echo substr($fields->description,0,170) . "..."; ?></p>
    <p><a class="read-more" href="<?php echo get_page_link($post->ID); ?>" title="Read more about: <?php echo $fields->event_title; ?>">Read more...</a></p>
</div>
<?php } wp_reset_query(); ?>
1
Rob

これを試すことができます:

foreach( $pages as $key => $post )

そして:

<div class = "event <?php if( $key == ( count( $pages ) - 1 ) ) echo 'last'; ?>" >

最後のlast divにeventクラスを追加します。

5
mike23

$pagesは配列なので、$pages_count = count( $pages );でカウントを取得してからループ内に入れ、ループが繰り返されるたびにインクリメントされるカウンタを保持し、それがカウントif ( $pages_count == $counter++ )と等しいかどうかを比較します。

0
Ashfame