eyecatch php

PHP

【php】array_unique関数で重複した値を削除するまとめ

2019/09/06

phpのarray_unique関数で重複した値を削除する(まとめる)方法を備忘録としてポストします。

配列の重複値を削除 array_unique()

仕様

リファレンスから転載します。

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

array を入力とし、値に重複のない新規配列を返します。

キーは保持されることに注意してください。 array_unique() はまず文字列として値をソートし、 各値の最初のキーを保持し、2回目以降の全てのキーを無視します。 これは、ソート前の array で最初の関連する値のキーが保持されるという意味ではありません。

実際に使ってみる 1次元配列編

例1

例1の結果

重複している値の内、最初の値が残っています。

例2

例2の結果

複数の重複でも最初の値を残して削除されます。
ccc,dddのように重複がない場合はそのままとなります。

多次元配列編

では、多次元配列の場合はどうなるのだということで、試してみます。

例3

例3の結果

これは欲しい結果ではないですね。

例4

第二引数に「SORT_REGULAR」を指定してみます。

例4の結果

valueとして「同じ配列」がある場合は削除されているようですね。

例5

下記のようにすると、

例5の結果

重複する配列がないので、全て帰ってきます。

例6

予想はつきますが、例5の結果配列を foreach で回しながら array_unique すると、さらに重複を削除した結果が得られます。

例6の結果

あまりスマートではない気はしますね。

-PHP
-, , , , ,