Tips

2014.09.28

PHP 関数リファレンス 配列操作系4

引数

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 の場合はキー名と値の両方が重複しているものだけが取り除かれます。

書式

配列の要素を比較する

$配列変数名 = 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

という値だけが抽出されます。

ブラウザ確認画像

今回はここまでにします。

新連載はじまりました!新PHP基礎 連載リンク

PHP基礎 連載

Recent News

Recent Tips

Tag Search