2015-05-14 58 views
0

使用 '而' statment我得到下面的输出循环:PHP while和for循环分组(使用WP ACF)

move_it 
clean_beauty 
on_our_radar 
move_it 

我要输出这些地方的字段($ featured_type)是相同的。例如。我想要输出如下:

move_it 
move_it 

clean_beauty 

on_our_radar 

这是我目前用基本循环输出的第一个例子。我正在循环字段(来自WordPress中的高级自定义字段转发器)。

 while(has_sub_field('featured_posts', $acf_id) ): 


     $featured_post = get_sub_field('featured_post', $acf_id); 
     $featured_type = get_field('editorial_template', $featured_post->ID); 

     echo $featured_type . '<br />'; 

     endwhile; 

我已经写了一些代码来做组,但知道必须有一个更优雅的方式来实现相同的结果。我的方式笨重!任何意见赞赏。

 <?php 

     while(has_sub_field('featured_posts', $acf_id) ): 


     $featured_post = get_sub_field('featured_post', $acf_id); 
     $featured_type = get_field('editorial_template', $featured_post->ID); 


     if ($featured_type == 'move_it') { 
      echo $featured_type . '<br />'; 
     } 

     endwhile; 

     while(has_sub_field('featured_posts', $acf_id) ): 


     $featured_post = get_sub_field('featured_post', $acf_id); 
     $featured_type = get_field('editorial_template', $featured_post->ID); 


     if ($featured_type == 'clean_beauty') { 
      echo $featured_type . '<br />'; 
     } 

     endwhile; 

     while(has_sub_field('featured_posts', $acf_id) ): 


     $featured_post = get_sub_field('featured_post', $acf_id); 
     $featured_type = get_field('editorial_template', $featured_post->ID); 


     if ($featured_type == 'on_our_radar') { 
      echo $featured_type . '<br />'; 
     } 

    endwhile; ?> 

回答

2

使用数组,你可以存储的值,然后才能最后呼应他们:

$featured_types = array(); 

while(has_sub_field('featured_posts', $acf_id) ): 

    $featured_post = get_sub_field('featured_post', $acf_id); 
    $featured_type = get_field('editorial_template', $featured_post->ID); 

    $featured_types[] = $featured_type; 

endwhile; 

sort($featured_types); 

echo implode('<br>', $featured_types); 

如果你不想给他们按字母顺序,有other ways做到这一点。