array_diff_key - 配列のキーの差異を確認する
array_diff_keyは、配列のキーの差異を調べる関数です。一方にあって一方にないキーを確認できます。比較は、(string)$a===(string)$bで行われます。例えば、数値の1と文字列の"1"は同じになります。多次元配列の場合、一次元のみが比較されます。
構文
パラメータ
$array1
基本の配列。
$array2
比較対象となる配列。
$...
比較対象となる配列は1つだけではなく、可変引数として第3引数以降に指定できる。
返り値
array
第1引数の配列にはあって、第2引数以降に指定した配列にはないキーの要素を集めた配列。
サンプルコード
<?php
$array1 = [
"a" => 1 ,
"b" => 2 ,
"c" => 3 ,
] ;
$array2 = [
"a" => 11 ,
"b" => 12 ,
] ;
$response = array_diff_key( $array1, $array2 ) ;
デモ
キーの差異を確認する
第1引数で指定した基本の配列にはあって、第2引数にはないキーを調べます。第1引数と第2引数を入れ替えると違う結果になります。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"a" => 1 ,
"b" => 2 ,
"c" => 3 ,
] ;
$array2 = [
"a" => 11 ,
"b" => 12 ,
] ;
$response = array_diff_key( $array1, $array2 ) ;
print_r( $response ) ;
第3引数以降を指定する
比較対象となる配列は1つだけではなく、第3引数以降で複数指定できます。第2引数以降の全ての配列のキーが比較対象となります。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"a" => 1 ,
"b" => 2 ,
"c" => 3 ,
] ;
$array2 = [
"a" => 11 ,
] ;
$array3 = [
"b" => 12 ,
] ;
$response = array_diff_key( $array1, $array2, $array3 ) ;
print_r( $response ) ;
比較方法
比較方法は(string)$a===(string)$bで行われます。なので、文字列に型変換して同じになる値は、同じものと判定されます。
<?php
/*** このコードは編集できます。 ***/
$array1 = [
"1" => "赤" ,
"2" => "白" ,
"3" => "黒" ,
] ;
$array2 = [
1 => "緑" ,
2 => "紫" ,
] ;
$response = array_diff_key( $array1, $array2 ) ;
print_r( $response ) ;
参考
- PHP: array_diff_key
- PHPの公式リファレンス。
関連記事
- array_diff_ukey
- ユーザー定義のアルゴリズムで、配列のキーの差異を確認する。
- array_udiff_assoc
- ユーザー定義のアルゴリズムで、配列の要素の差異を確認する。
- array_diff
- 配列の値の差異を確認する。
- array_column
- 多次元配列から特定カラムの配列を作る。
- array_diff_assoc
- 配列の要素の差異を確認する。
- array_intersect_assoc
- 複数の配列の中から共通の要素を確認する。