PHPで配列の中に同じ値があるかチェックする方法を解説!

PHPで配列の中に重複する値が存在するかをチェックする方法についてご紹介します。型の異なる値のチェックについてもサンプルコードと共に解説していきます。

コンテンツ [表示]

  1. 1PHPで配列の中に同じ値があるかチェックしたい
  2. 2PHPで配列の中に同じ値があるかチェックする方法
  3. 2.1PHPで配列内の重複する値を削除し、配列の数を比較する
  4. 2.2PHPで配列内の重複する値の数を数える
  5. 3まとめ

PHPで配列の中に同じ値があるかチェックしたい

PHPで配列の中に特定の値が存在するかを検索するにはarray_search関数やin_array関数を使ってチェックしますが、ここでは配列の中に重複する値が存在するかを確認する方法についてご紹介します。
 

Photo bydoki7

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関数を用いて再採番する事ができます。

array_unique関数
PHPのarray_unique関数は、配列から重複した値を削除し、ユニークな値の配列を抽出する事ができます。第二引き数の設定による違いをサンプルコードと共にご紹介します。
array_values関数
PHPのarray_values関数は、配列の全ての値を取得する関数です。array_values関数の使い方と、便利な使用例をサンプルコードと共に解説します。

PHPで配列内の重複する値の数を数える

array_unique関数を用いた方法では、配列内で重複した値が存在するかどうかのチェックをすることはできますが、どの値が何個重複しているかを抽出する事はできません。

array_count_values関数は、配列内の値の出現数を抽出する事ができます。

array_count_values

array_count_values( $variables );

配列$variablesarray_count_values関数にセットするとどうなるでしょうか?
サンプルコードで確認してみましょう。

array_count_values関数の戻り値では、値がキーとなり、値の出現回数がセットされた連想配列が作られています。

値が1以上のキーは、配列$variables内に重複する値という事になります。

またarray_count_values関数の詳細を知りたい方は下記よりご確認頂けます。

あわせて読みたい
array_count_values
array_count_values関数について解説します。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関数では値が12だけになり、array_count_values関数では1の出現回数は3回と認識されています。

どちらの関数においても、型に関係なく同じ値として識別されている事がわかります。

これはPHPの暗黙的な型変換によるもので、想定外の障害を発生させてしまうリスクにもなりうる為、気を付けたいですね。

GeekHive採用サイト

関連記事