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!