Удаление дубликатов в цикле foreach

21 мая 2013 г., 18:11:58
Просмотры: 16K
Голосов: -1

Я создал фильтр для результатов поиска, который позволяет пользователям фильтровать результаты по штату из их профиля. Проблема в том, что в выпадающем списке отображаются дубликаты штатов для пользователей из одного штата.

Вот текущий код, который пытается решить эту проблему:

<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'); // Получаем штат из профиля пользователя

                if($prevState != $state) {
                    $prevState = $state;
                    echo '<option value="'.$state.'">'.$state.'</option>';
                }
            }
        ?>
    </select>
</div>

Этот код работает хорошо, когда дубликаты штатов идут подряд, но в случае, подобном приведенному ниже, дубликаты не удаляются...

Не работает:
  -Калифорния
  -Вашингтон
  -Калифорния

Работает:
  -Калифорния
  -Калифорния
  -Вашингтон

Что можно сделать по-другому, чтобы получить нужный результат с возможностью сортировки по алфавиту? Спасибо.

0
Все ответы на вопрос 1
0

Используйте array_unique()

<?php
        foreach($users as $user) {
            $states[] = get_cimyFieldValue($user->ID, 'STATE'); // Получаем штат из профиля пользователя
        }
        $states = array_unique($states);
    ?>
    <div class="state">
        <input type="hidden" name="search_type" value="members">
        <select id="stateDrop" name="state">
            <option value="name">Штат</option>
            <?php
            foreach($states as $state) {
                echo '<option value="'.$state.'">'.$state.'</option>';
            }
            ?>
        </select>
    </div>
21 мая 2013 г. 18:20:54