PHP
関数リファレンス
今回も配列操作系の関数につい記述したいと思います。
array_diff
array_diff関数は配列内の要素(値)の中で、
別の配列の中に含まれない要素だけを抽出することができます。
書式
配列の要素を比較する
引数
1つ目の引数には比較元の配列を指定し、
2つ目の引数には1つ目の配列と比較をさせたい配列を指定します。
すると1つ目の引数の配列の中から、2つ目の引数で指定した配列の値の中に
含まれていない要素だけを取り出すことができます。
3つ目以降の引数にも配列を指定できるので、
その場合は2つ目にも3つ目以降にも値が含まれていない要素だけが
1つ目の配列の中から抽出されます。
array_diff('比較される配列', '比較する配列1', '比較する配列2', ・・・);
返り値
返り値には配列を比較した結果、
1つ目の配列のみに値が存在した要素だけが配列によって返されます。
$var_diff = array_diff($var1, $var2);
使用例
以下のようにすることで $var1 の中から $var2 に中に
存在しない値だけを抽出することができます。
<pre> <?php $var1 = array('aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff', 'ggg'); $var2 = array('bbb', 'ddd', 'fff', 'ggg'); $var_diff = array_diff($var1, $var2); var_dump($var_diff); ?> </pre>
結果は以下のように
aaa, ccc, eee
という値だけが抽出されます。
また比較する際にキー名は比較対象にしませんので、
キーが一致していても一致していなくても、値が重複していないものだけが抽出されるということになります。
<pre> <?php $var1 = array('key1' => 'aaa', 'key2' => 'bbb', 'key3' => 'ccc', 'key4' => 'ddd', 'key5' => 'eee'); $var2 = array('key1' => 'bbb', 'key4' => 'ddd'); $var_diff = array_diff($var1, $var2); var_dump($var_diff); ?> </pre>
結果は aaa, ccc, eee だけが抽出されます。
array_diff_key
array_diff_key関数は array_diff のように配列内の中で、
別の配列の中に含まれない要素だけを抽出することができます。
ただ array_diff の場合は値をもとに抽出をしましたが、
array_diff_key の場合はキー名が重複していないものだけが抽出できます。
書式
配列をの要素を比較する