PHP には 2 つ以上の配列の差分をとってくれる関数に array_diff
というものがあります。この array_diff
は差分をとれるといってもどのような形で差分をとってくれるのかいまいち想像ができなかったでの実際に比較してその結果を調べました。
下記のサンプルコードを実行した結果、比較対象となる配列に無い要素が配列の形式で返されているのが分かります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php /* 比較対象の配列で要素が足りない場合 */ $x = array('hoge', 'moge', 'sore', 'dore'); $y = array('hoge', 'sore', 'dore'); var_dump(array_diff($x, $y)); /* 出力結果: array(1) { [1]=> string(4) "moge" } */ /* 比較対象の配列で要素が多い場合 */ $x = array('hoge', 'sore', 'dore'); $y = array('hoge', 'moge', 'sore', 'dore'); var_dump(array_diff($x, $y)); /* 出力結果: array(0) { } */ /* 要素は一致しているが順番が違う場合 */ $x = array('hoge', 'moge', 'sore', 'dore'); $y = array('hoge', 'sore', 'dore', 'moge'); var_dump(array_diff($x, $y)); /* 出力結果: array(0) { } */ ?> |