2011-07-28 12 views
0

foreachループの最後のアイテムを対象にしようとしていますが、少し奇妙です。foreachループの問題の最後のアイテムをターゲットにする

は、私がループ内で二つのアイテムを持って、私は次のことを試してみた:

  1. のカウントのために+/-を設定しないで、これは最初の項目を対象としています。
  2. カウントとして-1を使用すると、最初のアイテムも対象となります。
  3. +1をカウントとして使用すると、3番目の アイテムを追加するまではアイテムを対象としません。

ここにコードはありますか?

<?php $pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order')); 
foreach($pages as $key => $post) 
{ 
setup_postdata($post); 
$fields = get_fields(); 
?> 

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

答えて

1

これはそれを行うための方法です:

<?php 
$pages = get_pages(array('child_of' => $post->ID, 'sort_column' => 'menu_order')); 

// keep a record of the number of pages -1 
// in order to compare against 0 indexed array key 
$pagesNo = count($pages)-1; 

foreach($pages as $key => $post) 
{ 
setup_postdata($post); 
$fields = get_fields(); 
?> 
<div class="event<?php if($key == $pagesNo) echo 'last'; ?>"></div> 
<?php } wp_reset_query(); ?> 
+0

私は質問を編集してより意味をなさないようにしました。 -1を使用すると、2番目の項目ではなく最初の項目を対象とします。 – Rob

+0

@Rob:ループの前に 'var_dump($ pages)'を追加し、質問を編集して出力を共有できますか?配列の添字が0の場合は、配列の数から-1を引く必要があります。 – Shef

+1

初心者の方に感謝しました。 – Rob

0

あなたがカウントする必要がある場合には、forまたはwhileループがforeachよりも良いかもしれません。

関連する問題