引数
1つ目の引数には比較元の配列を指定し、
2つ目の引数には1つ目の配列と比較をさせたい配列を指定します。
すると1つ目の引数の配列の中から、2つ目の引数で指定した配列のキー名の中に
含まれていない要素だけを取り出すことができます。
3つ目以降の引数にも配列を指定できるので、
その場合は2つ目にも3つ目以降にもキー名が含まれていない要素だけが
1つ目の配列の中から抽出されます。
array_diff_key('比較される配列', '比較する配列1', '比較する配列2', ・・・);
返り値
返り値には配列を比較した結果、
1つ目の配列のみにキー名が存在した要素だけが配列によって返されます。
$var_diff_key = array_diff_key($var1, $var2);
使用例
以下のようにすることで $var1 の中から $var2 に中に
存在しないキー名だけを抽出することができます。
<pre> <?php $var1 = array('key1' => 'aaa', 'key2' => 'bbb', 'key3' => 'ccc', 'key4' => 'ddd', 'key5' => 'eee'); $var2 = array('key1' => 'ccc', 'key4' => 'eee'); $var_diff_key = array_diff_key($var1, $var2); var_dump($var_diff_key); ?> </pre>
結果は以下のように
bbb, ccc, eee
という値だけが抽出されます。
また比較する際にキー名は比較対象にしませんので、
キーが一致していても一致していなくても、値が重複していないものだけが抽出されるということになります。
<pre> <?php $var1 = array('key1' => 'aaa', 'key2' => 'bbb', 'key3' => 'ccc', 'key4' => 'ddd', 'key5' => 'eee'); $var2 = array('key1' => 'bbb', 'key4' => 'ddd'); $var_diff_key = array_diff_key($var1, $var2); var_dump($var_diff_key); ?> </pre>
結果は aaa, ccc, eee だけが抽出されます。
array_diff_assoc
array_diff_assoc関数は array_diff のように配列内の中で、
別の配列の中に含まれない要素だけを抽出することができます。
ただ array_diff の場合は値をもとに抽出をしましたが、
array_diff_assoc の場合はキー名と値の両方が重複しているものだけが取り除かれます。
書式
配列の要素を比較する
引数
1つ目の引数には比較元の配列を指定し、
2つ目の引数には1つ目の配列と比較をさせたい配列を指定します。
すると1つ目の引数の配列の中から、2つ目の引数で指定した配列のキー名と値の両方が
一致していない要素だけを取り出すことができます。
つまりキー名と値のどちらかが異なっていたら、重複していないと判断され抽出されるということになります。
3つ目以降の引数にも配列を指定できるので、
その場合は2つ目にも3つ目以降にもキー名と値の両方が一致していない要素だけが
1つ目の配列の中から抽出されます。
array_diff_assoc('比較される配列', '比較する配列1', '比較する配列2', ・・・);
返り値
返り値には配列を比較した結果、
1つ目の配列のみに同じキー名と値の組み合わせが存在していた要素だけが配列によって返されます。
$var_diff_assoc = array_diff_assoc($var1, $var2);
使用例
以下のようにすることで $var1 の中から $var2 に中に
同じキー名と値の組み合わせが存在していないものだけを抽出することができます。
<pre> <?php $var1 = array('key1' => 'aaa', 'key2' => 'bbb', 'key3' => 'ccc', 'key4' => 'ddd', 'key5' => 'eee'); $var2 = array('key1' => 'aaa', 'key2' => 'ccc', 'key3' => 'ccc', 'key5' => 'ddd'); $var_diff_assoc = array_diff_assoc($var1, $var2); var_dump($var_diff_assoc); ?> </pre>
キー名と値が同じように一致しているのは key1 => aaa と key3 => ccc だけですので
結果は以下のように
bbb, ddd, eee
という値だけが抽出されます。
今回はここまでにします。