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,

0
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>
21 mai 2013 18:20:54