作成日: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',
//)