PHPのarray_intersect_key!配列のキーで共通の値を取得する

PHPのarray_intersect_key関数について書いています。

array_intersect_key関数は、複数の配列間で共通のキーを持つ要素を抽出した新しい配列を返します。
array_intersect関数が値の共通性を比較するのに対し、array_intersect_key関数はキーの共通性を比較します。

この関数を使うと、複数の連想配列で共通のキーを持つデータを抽出したい場合に便利です。

array_intersect_key関数の基本的な使い方

array_intersect_key関数は、引数として与えられた複数の配列間で、共通のキーを持つ要素を抽出した新しい配列を返します。
基本的な構文は以下のとおりです。

array_intersect_key(array $array1, array ...$arrays): array
  • $array1: 比較する最初の配列。
    • 共通のキーを持つ要素を見つけたい最初の配列を指定します。
  • $arrays: 比較するその他の配列(複数指定可能)。
    • 共通のキーを持つ要素を見つけたい追加の配列をカンマ区切りで複数指定できます。

:TODO:

array_intersect_key関数の戻り値

array_intersect_key関数の戻り値は、引数として与えられたすべての配列に共通して存在するキーを持つ要素を含む配列です。
共通のキーと、値は最初の配列($array1)の対応するキーの値が保持されます。

共通のキーが存在しない場合は空の配列を返します。

2つの配列で共通のキーを持つ要素を取得する

2つの配列で共通のキーがある要素を取得します。

<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'd' => 6];

$common_keys = array_intersect_key($array1, $array2);

print_r($common_keys);
// 結果:Array ( [b] => 2 [c] => 3 )
?>

最初に$array1$array2という連想配列を作成しました。
そしてarray_intersect_key関数を使って、共通するキーのある要素を取得しています。

今回の例だと、$array1$array2に共通して存在するキー (b, c) を持つ要素を抽出し
新しい配列$common_keysを作成しています。

結果($common_keys)を確認すると、共通するキーの要素が取得できました。
取得できた配列の値としては、最初の配列($array1)のものが保持されています。

3つ以上の配列で共通のキーを持つ要素を取得する

3つの配列を使って、共通する要素を取得してみます。

<?php
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 4, 'c' => 5, 'e' => 7];
$array3 = ['b' => 8, 'c' => 9, 'f' => 10];

$common_keys = array_intersect_key($array1, $array2, $array3);

print_r($common_keys);
// 結果:Array ( [b] => 2 [c] => 3 )
?>

最初に3つの配列($array1$array2$array3)を定義しています。
そして、array_intersect_key関数に3つの配列を渡しています。

そうすると、渡したすべての配列に共通して存在するキー (b,c) を持つ要素を抽出して
新しい配列($common_keys)を返します。

結果を確認すると、すべての配列に存在するキーの要素が返ってきました。

array_intersect_key関数を使う際の注意点

  • キーの比較: キーは文字列として比較されます。型が異なる場合でも、文字列として同じであれば共通のキーとみなされます。(true1が同じなど)
  • 値の保持: 返される配列の値は、最初の配列($array1)の共通のキーに対応する値が保持されます。他の配列の同じキーの値は無視されます。

PHPのarray_intersect_key関数の使い方まとめ

今回はPHPのarray_intersect_key関数の使い方について解説しました。
この記事の内容をまとめます。

・`array_intersect_key(array $array1, array …$arrays): array` で複数の配列間で、共通のキーを持つ要素を抽出した新しい配列を作成する。
・引数として与えられた、すべての配列に共通するキーを持つ要素が返される。
・返される配列のキーは共通のキーとなり、値は最初の配列のものが保持される。
・複数の連想配列で共通のキーを持つデータを抽出したい場合に便利。
PHP

コメント