PHPで配列の中に同じ値があるかチェックする方法を解説!
PHPで配列の中に重複する値が存在するかをチェックする方法についてご紹介します。型の異なる値のチェックについてもサンプルコードと共に解説していきます。
PHPで配列の中に同じ値があるかチェックしたい
PHPで配列の中に特定の値が存在するかを検索するにはarray_search
関数やin_array
関数を使ってチェックしますが、ここでは配列の中に重複する値が存在するかを確認する方法についてご紹介します。
PHPで配列の中に同じ値があるかチェックする方法
配列$variable
の中に重複する値が存在するかを、チェックしてみたいと思います。
$variable
$variables = ['A', 'B', 'A', 'B', 'C', 'A', 'D'];
PHPで配列内の重複する値を削除し、配列の数を比較する
PHPのarray_unique
関数を用いて、配列から重複した値を取り除く事ができます。
array_unique
array_unique( $variables );
array_unique
関数の前と後で配列がどのように変化したかをサンプルコードを使って確認してみましょう。
配列$variables
の重複する値が削除され、配列の値がユニークになっている事が確認できます。
この配列のカウント数をarray_unique
実行前後で比較する事で、配列内に重複する値が存在したかどうかをチェックする事ができます。
array_unique
関数で削除された要素のインデックスをサンプルコードを見て頂くと、実行前後で変わりません。ここでは使う用途はありませんが、配列のインデックスを詰めるにはarray_values
関数を用いて再採番する事ができます。
PHPで配列内の重複する値の数を数える
array_unique
関数を用いた方法では、配列内で重複した値が存在するかどうかのチェックをすることはできますが、どの値が何個重複しているかを抽出する事はできません。
array_count_values
関数は、配列内の値の出現数を抽出する事ができます。
array_count_values
array_count_values( $variables );
配列$variables
をarray_count_values
関数にセットするとどうなるでしょうか?
サンプルコードで確認してみましょう。
array_count_values
関数の戻り値では、値がキーとなり、値の出現回数がセットされた連想配列が作られています。
値が1
以上のキーは、配列$variables
内に重複する値という事になります。
またarray_count_values
関数の詳細を知りたい方は下記よりご確認頂けます。
まとめ
array_unique
関数とarray_count_values
関数を用いてPHPで配列の中に同じ値があるかチェックする方法についてご紹介しましたが、最後に数値の1
と文字列の'1'
ではどのように判定されるかを比較してみたいと思います。
下記がサンプルコードに使う配列$variables
です。
$variables
$variables = ['1', 1, '2', 1];
この配列の値はarray_unique
関数とarray_count_values
関数ではどのように識別されるでしょうか?
array_unique
関数では値が1
と2
だけになり、array_count_values
関数では1
の出現回数は3回と認識されています。
どちらの関数においても、型に関係なく同じ値として識別されている事がわかります。
これはPHPの暗黙的な型変換によるもので、想定外の障害を発生させてしまうリスクにもなりうる為、気を付けたいですね。
