从循环中删除重复的值

时间:2014-07-17 作者:user3301994

我有一个输出<option> a的字段<select> 组它包含了我正在发布的许多旅行包的许多城市名称。诀窍是我需要避免重复的值。

例如:我有4个从芝加哥出发的旅行包,5个从奥兰多出发,3个从洛杉矶出发,2个从纽约出发。

因此,它输出:
Select your city
芝加哥
芝加哥
芝加哥
奥兰多
奥兰多
奥兰多
洛杉矶
洛杉矶
纽约
纽约

我只需要打印其中一个!

<select name="nDep" id="iDep" onchange="this.form.submit();">
<option selected disabled>Outras saídas disponíveis</option>
  <?php
    $args = array(
      \'post_type\'     => \'packs\',
      \'order\'         => \'ASC\'
    );
    $the_query = new WP_Query( $args );
    if(have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
  ?>

<option value="<?php the_field(\'departures\'); ?>"><?php the_field(\'departures\'); ?></option>

  <?php endwhile; endif; ?>
</select>

1 个回复
最合适的回答,由SO网友:mrwweb 整理而成

我不知道WordPress有什么特定的方法可以从查询中排除重复的标题帖子,我相信有多种方法可以解决这个问题。想到的解决方案是将每个帖子标题存储在一个数组中,然后在输出帖子之前检查该标题是否已经存在。

一些未经测试的快速代码:

<?php
    $args = array(
      \'post_type\'     => \'packs\',
      \'order\'         => \'ASC\',
      \'orderby\'       => \'title\'
    );
    $the_query = new WP_Query( $args );
    // array to store cities
    $unique_cities = array();
    if( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
        $city = get_the_field(\'departures\');
        // only create option if city hasn\'t been added yet
        if( ! in_array( $city, $unique_cities ) ) :
            // add city to array so it doesn\'t repeat
            $unique_cities[] = $city;
    ?>

            <option value="<?php echo $city; ?>"><?php echo $city; ?></option>

  <?php
    endif;
  endwhile; endif; ?>
另外,请注意我认为您打算做的另外两个小改动:

添加了orderby WP\\u查询的参数,以便将城市列为A-Z。首先固定have_posts() 因此,它正在测试您的自定义查询

结束

相关推荐

The loop does not show users

我想展示所有帖子​​作者。代码作者。php<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php if( get_post_type() == \'post\' ) {?> <?php } if( get_post_type() == \'post-type\' ) {?> <?php } else; endwhile;?>

从循环中删除重复的值 - 小码农CODE - 行之有效找到问题解决它

从循环中删除重复的值

时间:2014-07-17 作者:user3301994

我有一个输出<option> a的字段<select> 组它包含了我正在发布的许多旅行包的许多城市名称。诀窍是我需要避免重复的值。

例如:我有4个从芝加哥出发的旅行包,5个从奥兰多出发,3个从洛杉矶出发,2个从纽约出发。

因此,它输出:
Select your city
芝加哥
芝加哥
芝加哥
奥兰多
奥兰多
奥兰多
洛杉矶
洛杉矶
纽约
纽约

我只需要打印其中一个!

<select name="nDep" id="iDep" onchange="this.form.submit();">
<option selected disabled>Outras saídas disponíveis</option>
  <?php
    $args = array(
      \'post_type\'     => \'packs\',
      \'order\'         => \'ASC\'
    );
    $the_query = new WP_Query( $args );
    if(have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
  ?>

<option value="<?php the_field(\'departures\'); ?>"><?php the_field(\'departures\'); ?></option>

  <?php endwhile; endif; ?>
</select>

1 个回复
最合适的回答,由SO网友:mrwweb 整理而成

我不知道WordPress有什么特定的方法可以从查询中排除重复的标题帖子,我相信有多种方法可以解决这个问题。想到的解决方案是将每个帖子标题存储在一个数组中,然后在输出帖子之前检查该标题是否已经存在。

一些未经测试的快速代码:

<?php
    $args = array(
      \'post_type\'     => \'packs\',
      \'order\'         => \'ASC\',
      \'orderby\'       => \'title\'
    );
    $the_query = new WP_Query( $args );
    // array to store cities
    $unique_cities = array();
    if( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
        $city = get_the_field(\'departures\');
        // only create option if city hasn\'t been added yet
        if( ! in_array( $city, $unique_cities ) ) :
            // add city to array so it doesn\'t repeat
            $unique_cities[] = $city;
    ?>

            <option value="<?php echo $city; ?>"><?php echo $city; ?></option>

  <?php
    endif;
  endwhile; endif; ?>
另外,请注意我认为您打算做的另外两个小改动:

添加了orderby WP\\u查询的参数,以便将城市列为A-Z。首先固定have_posts() 因此,它正在测试您的自定义查询

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp