【PHP】配列・連想配列を比較・削除できる関数|array_diff() ・array_intersect()など

今回はPHPで個人的によく利用する、配列・連想配列の要素を比較し削除する関数のまとめとなります。

配列・連想配列を比較し差分を返す関数|要素を削除する例

array_diff ・array_diff_assoc関数は、第1引数と第2引数以降に指定した配列を比較し、差分の配列を返します。

値を比較し差分を返す|array_diff 

array_diff関数では、配列の値を比較し差分の配列を返します。以下、例となります。

$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);

出力結果

以下が出力結果となり、配列$array1から、配列$array2と同じ値を削除した配列となります。

Array (
	[1] => blue
)

キーと値のセットを比較し差分を返す|array_diff_assoc

array_diff_assoc関数では、配列のキーと値のセットを比較し差分の配列を返します。以下、例となります。

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);

print_r($result);

出力結果

以下が出力結果となり、配列$array1から、配列$array2と同じキーと値のセットを削除した配列となります。

また、配列$array2にも配列$array1と同じredの値がありますが、キーが異なるため削除されません。

Array ( 
	[b] => brown 
    [c] => blue 
    [0] => red
)

配列を比較し共通項を返す関数|要素を削除する例

array_intersect・array_intersect_assoc関数は、第1引数と第2引数以降に指定した配列を比較し、共通項の配列を返します。

値を比較し共通項を返す|array_intersect

array_intersect関数では、配列の値を比較し共通項の配列を返します。以下、例となります。

$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);

print_r($result);

出力結果

以下が出力結果となり、配列$array1から、配列$array2と同じ値以外を削除した配列となります。

Array (
	[a] => green 
    [0] => red 
    [2] => red
)

キーと値のセットを比較し共通項を返す|array_intersect_assoc

array_intersect_assoc関数では、配列のキーと値のセットを比較し共通項の配列を返します。以下、例となります。

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_intersect_assoc($array1, $array2);

print_r($result);

出力結果

以下が出力結果となり、配列$array1から、配列$array2と同じキーと値のセット以外を削除した配列となります。

また、配列$array2にも配列$array1と同じredの値がありますが、キーが異なるため削除されます。

Array ( 
	[a] => green 
)

その他の関数|配列を比較し削除

PHPで配列の要素を比較し削除できる関数は、他にもあります。詳しくは以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。