Domanda

ho creato un uploader di immagini, che funziona da remoto, in modo ogni volta che un utente inserisce un mazzo di collegamenti, voglio evitare che i collegamenti duplicati vengono aggiunti in modo che l'immagine non viene copiata due volte e viene rimosso in modo che lascia i link per essere unica senza duplicati.

$break = explode("\n", $links);
$count = count($break);

$unique_images = array();

for($i = 0; $i < $count; $i++)
{
    array_push($unique_images, $break[$i]); 
}

array_unique($unique_images);

Il resto delle opere di codice, ma io non sono solo ottenere il motivo per cui non funziona, ho anche provato un ciclo foreach ma questo non ha aiutato pure.

Ho impostato error_reporting a E_ALL ma non ci sono errori. Io uso var_dump sulla matrice e ottengo questo:

array(3) 
{ 
     [0]=> string(48) "http://localhost:8888/images/img/wallpaper-1.jpg" 
     [1]=> string(48) "http://localhost:8888/images/img/wallpaper-1.jpg" 
     [2]=> string(48) "http://localhost:8888/images/img/wallpaper-1.jpg" 
} 

Come mai la array_unique non rimuove eventuali duplicati?

È stato utile?

Soluzione

array_unique() ritorna di un nuovo array , non modifica l'array in posizione:

  

accetta un array di input e restituisce un nuovo array senza i valori duplicati.

$unique_images = array_unique($unique_images);

Altri suggerimenti

array_unique rendimenti l'array filtrato, invece di alterare esso. Cambia la tua ultima riga in:

$unique_images = array_unique($unique_images)

e dovrebbe funzionare.

Si può semplicemente fare:

$unique_images = array_unique(explode("\n", $links));

La funzione array_unique restituisce un nuovo array con i duplicati rimossi. Quindi è necessario per raccogliere il suo valore di ritorno.

restituisce anche explode voi un array cui potete accedere direttamente in pasto ai array_unique.

$unique_images = array_unique($unique_images);

altrimenti si sta semplicemente scartando il risultato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top