4

リモートで動作する画像アップローダーを作成したので、ユーザーが多数のリンクを入力するたびに、重複するリンクが追加されないようにして、画像が2回コピーされたり削除されたりしないようにして、リンクが一意になるようにします。重複します。

$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);

残りのコードは機能しますが、なぜ機能しないのかわかりませんforeach。ループも試しましたが、それも役に立ちませんでした。

error_reporting設定しましE_ALLたが、エラーはありません。私var_dumpはアレイで使用し、これを取得します:

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" 
} 

array_uniqueなぜ重複を削除しないのですか?

4

4 に答える 4

4

array_unique 変更するのではなく、フィルタリングされた配列を返します。最後の行を次のように変更します。

$unique_images = array_unique($unique_images)

そしてそれは機能しているはずです。

于 2010-10-21T14:18:24.917 に答える
3

array_unique() 新しい配列を返しますが、その場で配列を変更しません。

入力配列を受け取り、重複する値のない新しい配列を返します。

$unique_images = array_unique($unique_images);
于 2010-10-21T14:17:51.857 に答える
2

あなたはただすることができます:

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

このarray_unique関数は、重複が削除された新しい配列を返します。したがって、その戻り値を収集する必要があります。

また、直接フィードできる配列explodeを返します。array_unique

于 2010-10-21T14:18:42.090 に答える
1
$unique_images = array_unique($unique_images);

それ以外の場合は、単に結果を破棄しているだけです

于 2010-10-21T14:17:44.680 に答える