web-dev-qa-db-fra.com

Dans une boucle foreach, comment cibler le dernier élément de la boucle?

J'ai le code suivant pour faire une boucle foreach, je veux cibler le dernier élément de la boucle (par exemple, s'il est bouclé sur 3 événements, je veux cibler le 3ème événement) pour faire quelque chose de légèrement différent avec le css. Comment je ferais ça?

<?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

Vous pouvez essayer ceci:

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

et :

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

Cela ajoutera une classe last à votre dernière div. event.

5
mike23

Puisque $pages est un tableau, obtenez son compte par $pages_count = count( $pages ); puis dans la boucle, conservez un compteur incrémenté à chaque itération de la boucle et comparez-le s'il est égal au compte if ( $pages_count == $counter++ )

0
Ashfame