Elimină duplicatele într-o buclă foreach
21 mai 2013, 18:11:58
Vizualizări: 16K
Voturi: -1
Am creat un filtru pentru rezultatele de căutare care permite utilizatorilor să filtreze în funcție de State
din profilul lor. Problema pe care o am este că apar state duplicate în lista drop-down pentru utilizatorii care au același stat.
Iată codul actual care încearcă să rezolve această problemă.
<div class="state">
<input type="hidden" name="search_type" value="members">
<select id="stateDrop" name="state">
<option value="name">Stat</option>
<?php
$prevState = "";
foreach($users as $user) {
$state = get_cimyFieldValue($user->ID, 'STATE'); // Preluăm statul din pagina de profil
if($prevState != $state) {
$prevState = $state;
echo '<option value="'.$state.'">'.$state.'</option>';
}
}
?>
</select>
</div>
Această soluție funcționează bine când două state identice sunt consecutive, dar când am o situație ca cea de mai jos, nu elimină duplicatele...
Nu funcționează
-California
-Washington
-California
Funcționează
-California
-California
-Washington
Ce pot face diferit pentru a obține rezultatele dorite și eventual să sortez lista alfabetic? Mulțumesc,
Toate răspunsurile la întrebare
1
0
Folosește array_unique()
<?php
foreach($users as $user) {
$states[] = get_cimyFieldValue($user->ID, 'STATE'); // Preluăm statul din pagina de profil a utilizatorului
}
$states = array_unique($states); // Eliminăm duplicatele din array
?>
<div class="state">
<input type="hidden" name="search_type" value="members">
<select id="stateDrop" name="state">
<option value="name">Stat</option>
<?php
foreach($states as $state) {
echo '<option value="'.$state.'">'.$state.'</option>';
}
?>
</select>
</div>

Ravinder Kumar
2.57K
21 mai 2013 18:20:54
Întrebări similare
3
răspunsuri
2
răspunsuri
4
răspunsuri
2
răspunsuri