消除Foreach循环中的重复项

时间:2013-05-21 作者:Romes

我为我的搜索结果创建了一个过滤器,允许人们根据自己的State 从他们的个人资料中。我遇到的问题是,对于具有相同状态的用户,下拉列表中会显示重复的状态。

下面是试图消除该问题的当前代码。

<div class="state">
    <input type="hidden" name="search_type" value="members">
    <select id="stateDrop" name="state">
        <option value="name">State</option>
        <?php
            $prevState = ""; 
            foreach($users as $user) {
                $state = get_cimyFieldValue($user->ID, \'STATE\'); // Grabing their state from their profile page

                if($prevState != $state) {
                    $prevState = $state;
                    echo \'<option value="\'.$state.\'">\'.$state.\'</option>\';
                }
            }
        ?>
    </select>
</div>
当两个状态紧随其后时,这非常有效,但当我有下面这样的内容时,它不会消除重复项。。。

Not working
  -California
  -Washington
  -California

Working
  -California
  -California
  -Washington
为了得到所需的结果并可能按字母顺序进行排序,我可以采取哪些不同的措施?谢谢

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

Use array_unique()

<?php
        foreach($users as $user) {
            $states[] = get_cimyFieldValue($user->ID, \'STATE\'); // Grabing their state from their profile page
        }
        $states = array_unique($states);
    ?>
    <div class="state">
        <input type="hidden" name="search_type" value="members">
        <select id="stateDrop" name="state">
            <option value="name">State</option>
            <?php
            foreach($states as $state) {
                echo \'<option value="\'.$state.\'">\'.$state.\'</option>\';
            }
            ?>
        </select>
    </div>
结束