Home / Programmazione / PHP / Trovare valori duplicati in array con PHP
Mattepuffo

Trovare valori duplicati in array con PHP

Trovare valori duplicati in array con PHP

Un problema che si potrebbe porre, quando si parla di array, è quello dei duplicati.

Supponiamo di avere un form per l'invio multiplo di email:

               <form action="#" method="post">
                        <dl>
                            <dt>
                            <label >EMAIL</label>
                            </dt>
                            <dd><input type="text" name="emailam[]" value="a@gm.com" /></dd>
                        </dl>
                        <dl>
                            <dd><input type="text" name="emailam[]" value="a@gm.com" /></dd>
                        </dl>
                        <dl>
                            <dd><input type="text" name="emailam[]" value="a@gm.com" /></dd>
                        </dl>
                        <dl>
                            <dd><input type="text" name="emailam[]" value="a@gm.com" /></dd>
                        </dl>
                        <dl>
                            <dd><input type="text" name="emailam[]" value="a@gm.com" /></dd>
                        </dl>
                        <dl>
                            <dd>
                                <input type="submit" value="Invia" name="btn_email" />
                            </dd>
                        </dl>
                    </form>

Vogliamo inviare le email solo agli indirizzi unici; nell'esempio invece manderemmo 4 volte l'email allo stesso indirizzo e una all'ultimo indirizzo (che è diverso).

Come possiamo fare?

Molto semplicemente usando la funzione array_unique().

Questa funzione accetta come mimino un parametro, che è l'array da controllare, e restituisce un array con i valori unici.

Nell'esempio darebbe solo due indirizzi.

Ecco come usarlo:

if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['btn_email'])) {

      $emailSended = $_POST['emailam'];
      $emailUnique = array_unique($emailSended);
      foreach($emailUnique as $eq) {
           echo $eq  .  '
';
      }

}

Così facendo verranno mostrate tutte le email uniche tra quelle che avete messo nel form.

Come vedete il suo utilizzo è molto semplice!