PHPのarray_intersect_key()
関数は、ある配列の要素のうち、他の複数のいづれの配列にも存在するキーの要素はどれかを調べ、キーと値の相関関係を維持したまま抽出する組み込み関数。
配列要素を比較する際、値は比較せず、キーだけを比較する。
定義
配列型 array_intersect_key( 配列型 $array1, 配列型 $array2[, 配列型 $...] );
パラメータ
- 配列型 $array1
他と比較する配列。
- 配列型 $array2
「配列型 $array1」と比較する配列。
- 配列型 $…
オプション。
「配列型 $array1」と比較する配列は、カンマ
,
で区切り、複数指定することができる。
戻り値
「配列型 $array1」の要素のうち、「配列型 $array2」や「配列型 $…」のいづれの配列にも存在するキーの要素を抽出した配列。
構文
ある配列の要素のうち、比較対象の配列にも存在するキーの要素を抽出
配列 = array_intersect_key( 他と比較する配列, 比較対象配列 );
「他と比較する配列」の要素のうち、「比較対象配列」にも存在するキーの要素を抽出し、「配列」に格納。
ある配列の要素のうち、他の複数のいづれの配列にも存在するキーの要素を抽出
配列 = array_intersect_key( 他と比較する配列, 比較対象配列1, 比較対象配列2, 比較対象配列3 );
「他と比較する配列」の要素のうち、「比較対象配列1」「比較対象配列2」「比較対象配列3」のいづれの配列にも存在するキーの要素を抽出し、「配列」に格納。
サンプル
下記の2点に注目。
- 配列要素を比較する際、値だけでなく、キーも含めて比較している。
- キーと値の相関関係を維持したまま抽出している。
ある配列の要素のうち、比較対象の配列にも存在するキーの要素を抽出
<pre>
<?php
$varArrayA = array( "白", "黒", "赤", "青", "緑" );
$varArrayB = array( "白", "黒", "青", "紫" );
print_r( array_intersect_key( $varArrayA, $varArrayB ) );
?>
</pre>
<?php
$varArrayA = array( "白", "黒", "赤", "青", "緑" );
$varArrayB = array( "白", "黒", "青", "紫" );
print_r( array_intersect_key( $varArrayA, $varArrayB ) );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[0] => 白
[1] => 黒
[2] => 赤
[3] => 青
)
(
[0] => 白
[1] => 黒
[2] => 赤
[3] => 青
)
ある連想配列の要素のうち、他の複数のいづれの連想配列にも存在するキーの要素を抽出
<pre>
<?php
$varArrayA = array(
"white" => "白",
"black" => "黒",
"red" => "赤",
"blue" => "青",
"green" => "緑"
);
$varArrayB = array(
"siro" => "しろ",
"black" => "くろ",
"red" => "あか",
"ao" => "あお"
);
$varArrayC = array(
"red" => "レッド",
"blue" => "ブルー",
"green" => "グリーン",
"black" => "ブラック"
);
print_r( array_intersect_key( $varArrayA, $varArrayB, $varArrayC ) );
?>
</pre>
<?php
$varArrayA = array(
"white" => "白",
"black" => "黒",
"red" => "赤",
"blue" => "青",
"green" => "緑"
);
$varArrayB = array(
"siro" => "しろ",
"black" => "くろ",
"red" => "あか",
"ao" => "あお"
);
$varArrayC = array(
"red" => "レッド",
"blue" => "ブルー",
"green" => "グリーン",
"black" => "ブラック"
);
print_r( array_intersect_key( $varArrayA, $varArrayB, $varArrayC ) );
?>
</pre>
↓↓↓出力結果↓↓↓
Array
(
[black] => 黒
[red] => 赤
)
(
[black] => 黒
[red] => 赤
)