【PHP入門】配列の重複した値を削除する(array_unique)

PHPでは配列を使用してさまざまな処理が可能です。

この記事では、

・array_unique関数を使用して重複した値を削除する方法
・連想配列の重複した値を削除する方法

という基本的な内容から、

・数値と文字列が混在した配列を数値として比較する方法

などの応用的な使い方に関しても解説していきます。

今回はそんなarray_unique関数の使用方法について、わかりやすく解説します!

目次

配列の重複した値を削除する

ここではarray_unique関数を使用して、配列の重複した値を削除する方法を紹介します。

array_uniqueの使い方

配列から重複した値を削除したい場合は、array_unique関数を使用します。

array_unique関数は第一引数に対象の配列を指定し、第二引数にソートのオプションを使用して、ソートの挙動を変更します。

array_unique( $配列 [, ソートフラグ ] )

以下にarray_unique関数を使用して、配列の重複した値を削除する処理を記述します。

<?php

$fruits1 = [ 'apple', 'orange', 'melon', 'banana', 'melon'];

//array_uniqueを使用して、重複した値を削除する
$fruits2 = array_unique($fruits1);

//実行結果
foreach($fruits2 as $value){
  echo $value;
  echo '<br>';
}

?>
実行結果
apple
orange
melon
banana

連想配列の重複した値を削除する

array_unique関数で連想配列の重複した値を削除したいときも、使い方は基本的に1次元配列と同様です。

以下にarray_unique関数を使用して、連想配列の重複した値を削除する方法を記述します。

<?php

$fruits1 = [ 1=>'apple', 2=>'orange', 3=>'melon', 4=>'banana', 5=>'melon'];

//array_uniqueを使用して、重複した値を削除する
$fruits2 = array_unique($fruits1);

//実行結果
foreach($fruits2 as $key => $value){
  echo $key.' : '.$value;
  echo '<br>';
}

?>
実行結果
1 : apple
2 : orange
3 : melon
4 : banana

なお、array_unique関数は多次元配列の使用は想定していませんので注意しましょう。

数値として比較する

array_unique関数は第二引数にソートフラグを指定することで、ソート方法を指定することができます。

SORT_REGULAR:通常(型変換しない)の比較
SORT_NUMERIC:数値に変換して比較
SORT_STRING:文字列に変換して比較
SORT_LOCALE_STRING:現在のロケールにもとづいて文字列として比較

以下にarray_unique関数の第二引数にSORT_NUMERICを指定して、数値と文字列が混在した配列の重複チェック処理の方法を記述します。

<?php

$value_array1 = [100, '0100', 200, '00400', 300, 400];

$value_array2 = array_unique($value_array1);

echo 'オプション指定なし:';
var_dump($value_array2);
echo '<br>';

//SORT_NUMERICを指定して比較する
$value_array3 = array_unique($value_array1, SORT_NUMERIC);

echo 'オプション指定あり:';
var_dump($value_array3);

?>
オプション指定なし:array(6) { [0]=> int(100) [1]=> string(4) "0100" [2]=> int(200) [3]=> string(5) "00400" [4]=> int(300) [5]=> int(400) } 
オプション指定あり:array(4) { [0]=> int(100) [2]=> int(200) [3]=> string(5) "00400" [4]=> int(300) }

サンプルでは配列に文字列で’0100’、’00400’などがありますが、array_unique関数の第二引数で数値比較のフラグSORT_NUMERICを指定することで、それぞれ数値の100、400に変換して比較が行われます。

array関数についてもっと詳しく知りたい方へ

配列を操作するさまざまな関数の使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、array_unique関数を使用して配列の重複した値を削除する方法や、オプションを指定して削除する方法を解説しました。

array_unique関数は、配列から重複した値のみを削除したい場合に便利な関数ですので、この機会にぜひ覚えておきましょう!

もし、array_unique関数の使い方を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次