PHPで配列の重複を削除し、キーを振り直す(array_unique)

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPの配列で重複した値を削除するarray_unique()のご紹介です。

削除するとキーが飛び飛びになるため、キーを連番で振り直す方法も併せてご紹介しています。

 

array_unique関数で重複した値を削除

Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 4
[6] => 5
)

array_unique()で重複した値が削除されました。

型が違っても同じ値なら重複は削除される

以下のように数値型を文字列型で同じ値があったとしても、重複した文字は削除されます。

Array
(
[0] => 1
[1] => 2
[2] => 3
[5] => 4
[6] => 5
)

変数$arrの配列には同じ文字でも型が違うものが混じっています。

 

  • 数値型の2と文字列型の"2"
  • 数値型の1と文字列型の"1"

関数によっては型が違うと、別の文字として判定する場合もありますが、array_unique()は同じものとして重複扱いとなります。

array_unique() はまず文字列として値をソートし、

出典:PHPマニュアル・array_unique

上記マニュアルにもあるように、一旦文字列型に値を変換して、型が揃ったところで重複チェックするためです。

型を意識せずにコーディングできるPHPらしい動作ですね。

配列のキーが[0][1][2][5][6]と削除された部分がなくなり、飛び飛びとなったため、キーを連番で振りなおしてみましょう。

array_values関数でキーを振り直す

Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)

array_unique()で重複を削除した配列を、変数$valに格納します。

その配列をarray_values()でキーを0から始まる連番で振り直しました。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメント

  1. にま より:

    表題などがarray_uniqeになっています。

    1. flatFlag より:

      確かに記述が間違っておりましたので修正しました。申し訳ございません。
      ご指摘いただきありがとうございます。

flatFlag へ返信する コメントをキャンセル

*