Eliminare i duplicati in un ciclo foreach

21 mag 2013, 18:11:58
Visualizzazioni: 16K
Voti: -1

Ho creato un filtro per i risultati di ricerca che permette agli utenti di filtrare in base allo Stato del loro profilo. Il problema è che nel menu a tendina compaiono stati duplicati quando più utenti condividono lo stesso stato.

Ecco il codice attuale che cerca di risolvere il problema:

<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'); // Recupera lo stato dal profilo utente

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

Questo funziona bene quando due stati uguali sono consecutivi, ma in casi come quello seguente non elimina i duplicati:

Non funziona
  -California
  -Washington
  -California

Funziona
  -California
  -California
  -Washington

Cosa posso fare diversamente per ottenere i risultati desiderati e magari ordinarli alfabeticamente? Grazie.

0
Tutte le risposte alla domanda 1
0

Utilizza array_unique()

<?php
        foreach($users as $user) {
            $states[] = get_cimyFieldValue($user->ID, 'STATE'); // Recupera lo stato dalla pagina del profilo
        }
        $states = array_unique($states);
    ?>
    <div class="state">
        <input type="hidden" name="search_type" value="members">
        <select id="stateDrop" name="state">
            <option value="name">Stato</option>
            <?php
            foreach($states as $state) {
                echo '<option value="'.$state.'">'.$state.'</option>';
            }
            ?>
        </select>
    </div>
21 mag 2013 18:20:54