作成日:2019-11-07, 更新日:2019-11-07
基本
・「複数の配列を比較」ではなく、「一つの配列の中にあるデータを比較」って感じの場合。
元の配列
$ary = array( 'd', 'a', 'b', 'c', 'a', 'b', );
重複データがあるか確認したい
・「d,a,b,c,a,b」には「a,b」が重複しているので、「重複アリ」としたい。
$uq_ary = array_unique($ary); if ( count($uq_ary) == count($ary) ) { echo '重複なし'; } else { echo '重複アリ'; } //重複アリ
各データの個数が知りたい
・「d,a,b,c,a,b」でそれぞれの個数を知りたい
$cnt_ary = array_count_values($ary); var_export($cnt_ary); //array ( // 'd' => 1, // 'a' => 2, // 'b' => 2, // 'c' => 1, //)
ユニーク値、重複データのみ、重複していないデータのみ取得
・「d,a,b,c,a,b」から「d,a,b,c」を取得 - ユニーク値
・「d,a,b,c,a,b」から「a,b」を取得 - 重複データのみ
・「d,a,b,c,a,b」から「d,c」を取得 - 重複していないデータのみ
含まれるデータのユニーク値を抽出
・「d,a,b,c,a,b」から「d,a,b,c」にしたい。
$uq_ary = array_unique($ary); var_export($uq_ary); //array ( // 0 => 'd', // 1 => 'a', // 2 => 'b', // 3 => 'c', //)
重複データのみ or 重複していないデータのみ抽出
・そんな便利な関数は無いみたい。
$ary_y = array(); $ary_n = array(); $cnt_ary = array_count_values($ary); foreach ( $cnt_ary as $k=>$v ) { if ( 1 < $v ) { // 重複あり $ary_y[] = $k; } else { // 重複していない $ary_n[] = $k; } } var_export($ary_y); //array ( // 0 => 'a', // 1 => 'b', //) var_export($ary_n); //array ( // 0 => 'd', // 1 => 'c', //)