SYNCER

SYNCER

array_diff() - 配列の値の差異を確認する

公開日:

array_diffは、配列の値の差異を調べる関数です。一方にあって一方にない値を確認できます。比較は、(string)$a===(string)$bで行われます。例えば、数値の1と文字列の"1"は同じになります。多次元配列の場合、一次元のみが比較されます。

構文

array array_diff ( array $array1 , array $array2 [, array $... ] )

パラメータ

$array1

基本の配列。

$array2

比較対象となる配列。

$...

比較対象となる配列は1つだけじゃなく、第3引数以降で指定できる。

返り値

array

第1引数の配列にはあって、第2引数以降の配列にはない値を集めた配列。この配列に含まれるのは第1引数の配列の要素(キーと値の組み合わせ)である。

サンプルコード

値の差異を確認する

第1引数で指定した基本の配列にはあって、第2引数にはない値を調べます。第1引数と第2引数を入れ替えると違う結果になります。

php

<?php
	// 配列
	$queue1 = [ "a", "b", "c", "d", "e" ] ;
	$queue2 = [ "a", "b", "c" ] ;

	// 実行
	$result = array_diff( $queue1, $queue2 ) ;

	// 返り値
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.21

Array
(
    [3] => d
    [4] => e
)

第3引数以降を指定する

比較対象となる配列は1つだけではなく、第3引数以降で複数指定できます。第2引数以降の全ての配列の値が比較対象となります。

php

<?php

	// 配列
	$queue1 = [ "a", "b", "c", "d", "e" ] ;
	$queue2 = [ "a" ] ;
	$queue3 = [ "b", "c" ] ;
	$queue4 = [ "d" ] ;

	// 実行
	$result = array_diff( $queue1, $queue2, $queue3, $queue4 ) ;

	// 返り値
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.21

Array
(
    [4] => e
)

比較方法

比較方法は(string)$a===(string)$bで行われます。なので、文字列に型変換して同じになる値は、同じものと判定されます。

php

<?php

	// 配列
	$queue1 = [ 1, 2, 3, 4, 5 ] ;
	$queue2 = [ "1", "2", "3" ] ;

	// 実行
	$result = array_diff( $queue1, $queue2 ) ;

	// 返り値
	print_r( $result ) ;

結果 (出力内容) - PHP7.0.21

Array
(
    [3] => 4
    [4] => 5
)

サンドボックス

ソースコードを編集してarray_diff()の挙動を確認して下さい。

Array
(
    [3] => d
    [4] => e
)

参考リンク

  • PHP - 公式マニュアル。