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.
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>

Ravinder Kumar
2.57K
21 mag 2013 18:20:54
Domande correlate
3
risposte
2
risposte