ホーム > 日記 > 行列の比較

行列の比較

DBのデータとCSVから読み込んだデータで整合性をとる必要があり、比較どうしようかと悩む。
単なる一次元配列ならarray_diffで簡単にできるのにと思ったところで、シリアライズすればと思いついた。
型も比較されることになるので注意。


$data1[] = array('key' => 1, 'name' => 'A', 'sex' => 'man');
$data1[] = array('key' => 2, 'name' => 'B', 'sex' => 'woman');
$data1[] = array('key' => 3, 'name' => 'C', 'sex' => 'woman');

$data2[] = array('key' => 1, 'name' => 'A', 'sex' => 'man');
$data2[] = array('key' => 2, 'name' => 'B', 'sex' => 'woman');
$data2[] = array('key' => 3, 'name' => 'D', 'sex' => 'woman');

var_dump(matrix_diff($data1, $data2));
var_dump(matrix_diff($data2, $data1));

function matrix_diff($arr1, $arr2)
{
       return array_map('unserialize', (array_diff(array_map('serialize', $arr1), array_map('serialize', $arr2))));
} 

あまりにも件数が多いようだとDBにテンポラリテーブル作成して作業するしかないですかね。
いい方法が思いつかない。

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。