array_diff_assoc() - 配列の要素の差異を確認する
公開日:
array_diff_assoc
は、配列の要素(キーと値の組み合わせ)の差異を調べる関数です。一方にあって、一方にない要素を確認できます。キー、または値のどちらかが違えば、違う要素という判定になります。比較は、(string)$a===(string)$b
で行われます。例えば、数値の1
と文字列の"1"
は同じになります。多次元配列の場合、一次元のみが比較されます。
構文
パラメータ
$array1
基本の配列。
$array2
比較対象となる配列。
$...
比較対象となる配列は1つだけじゃなく、第3引数以降で指定できる。
返り値
array
第1引数の配列にはあって、第2引数以降に指定した配列にはない要素を集めた配列。
サンプルコード
要素の差異を確認する
第1引数で指定した基本の配列にはあって、第2引数にはない要素(キーと値の組み合わせ)を調べます。キーと値の両方が同じでなければ、違う要素と判定されます。第1引数と第2引数を入れ替えると違う結果になります。
php
<?php
// 配列
$queue1 = [
"a" => 1 ,
"b" => 2 ,
"c" => 3 ,
"d" => 4 ,
] ;
$queue2 = [
"a" => 1 ,
"b" => 2 ,
"c" => 5 ,
"e" => 4 ,
] ;
// 実行
$result = array_diff_assoc( $queue1, $queue2 ) ;
// 返り値
print_r( $result ) ;
結果 (出力内容) - PHP7.0.21
Array
(
[c] => 3
[d] => 4
)
第3引数以降を指定する
比較対象となる配列は1つだけではなく、第3引数以降で複数指定できます。第2引数以降の全ての配列の要素が比較対象となります。
php
<?php
// 配列
$queue1 = [
"a" => 1 ,
"b" => 2 ,
"c" => 3 ,
"d" => 4 ,
] ;
$queue2 = [
"a" => 1 ,
"b" => 2 ,
] ;
$queue3 = [
"c" => 3 ,
] ;
// 実行
$result = array_diff_assoc( $queue1, $queue2, $queue3 ) ;
// 返り値
print_r( $result ) ;
結果 (出力内容) - PHP7.0.21
Array
(
[d] => 4
)
比較方法
比較方法は(string)$a===(string)$b
で行われます。なので、文字列に型変換して同じになる値は、同じものと判定されます。
php
<?php
// 配列
$queue1 = [
"a" => 1 ,
2 => 2 ,
"c" => 3 ,
] ;
$queue2 = [
"a" => "1" ,
"2" => 2 ,
"c" => 5 ,
] ;
// 実行
$result = array_diff_assoc( $queue1, $queue2 ) ;
// 返り値
print_r( $result ) ;
結果 (出力内容) - PHP7.0.21
Array
(
[c] => 3
)
サンドボックス
ソースコードを編集してarray_diff_assoc()
の挙動を確認して下さい。
参考リンク
- PHP - 公式マニュアル。