Eliminar duplicados en un bucle foreach

21 may 2013, 18:11:58
Vistas: 16K
Votos: -1

He creado un filtro para mis resultados de búsqueda que permite a los usuarios filtrar búsquedas basadas en el Estado de su perfil. El problema que tengo es que aparecen estados duplicados en la lista desplegable cuando varios usuarios tienen el mismo estado.

Aquí está el código actual que intenta resolver ese problema.

<div class="state">
    <input type="hidden" name="search_type" value="members">
    <select id="stateDrop" name="state">
        <option value="name">Estado</option>
        <?php
            $prevState = ""; 
            foreach($users as $user) {
                $state = get_cimyFieldValue($user->ID, 'STATE'); // Obteniendo el estado de su página de perfil

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

Esto funciona bien cuando 2 estados están uno después del otro, pero cuando tengo algo como lo siguiente, no elimina los duplicados...

No funciona
  -California
  -Washington
  -California

Funciona
  -California
  -California
  -Washington

¿Qué puedo hacer diferente para obtener los resultados que necesito y posiblemente ordenarlos alfabéticamente? Gracias,

0
Todas las respuestas a la pregunta 1
0

Usar array_unique()

<?php
        foreach($users as $user) {
            $states[] = get_cimyFieldValue($user->ID, 'STATE'); // Obteniendo el estado de su página de perfil
        }
        $states = array_unique($states);
    ?>
    <div class="state">
        <input type="hidden" name="search_type" value="members">
        <select id="stateDrop" name="state">
            <option value="name">Estado</option>
            <?php
            foreach($states as $state) {
                echo '<option value="'.$state.'">'.$state.'</option>';
            }
            ?>
        </select>
    </div>
21 may 2013 18:20:54