array_uintersect - ユーザー定義のアルゴリズムで、複数の配列の中の共通の値を確認する
array_uintersectは、ユーザー定義のアルゴリズムを使って、指定した全ての配列に含まれる共通の値を見つける関数です。
構文
array array_uintersect ( array $array1 , array $array2 [, array $... ], callable $value_compare_func )
パラメータ
$array1
基本の配列。
$array2
比較対象となる配列。
$...
比較対象となる配列は1つだけじゃなく、第3引数以降で指定できる。
$value_compare_func
int callback ( mixed $a, mixed $b )
差異を判定するための比較関数を最後から1つ前の引数として指定する。このコールバック関数は比較対象の2つの値を受け取る。関数が0を返した時に同じ、正の数を返した時に第1引数の方が大きい、負の数を返した時に第1引数の方が小さい、と判定される。
返り値
array
全ての配列に含まれる共通の値を集めた配列。返り値の配列は、第1引数に指定した配列の要素で構成される。
サンプルコード
<?php
$array1 = [ "a", "b", "c", "d", "e" ] ;
$array2 = [ "a", "b", "c" ] ;
function callback( $a, $b ) {
// "d"と"a"を同じ扱いにする
if ( $a == "d" ) $a = "a" ;
if ( $b == "d" ) $b = "a" ;
// 他は自然な処理
if ( $a == $b ) {
return 0 ;
} else {
return $a > $b ? 1 : -1 ;
}
}
$response = array_uintersect( $array1, $array2, "callback" ) ;
デモ
独自ルールで、"d"
を"a"
と同じ値扱いにしました。"d"
は共通項ではないのに、結果に含まれます。
<?php
/*** このコードは編集できます。 ***/
$array1 = [ "a", "b", "c", "d", "e" ] ;
$array2 = [ "a", "b", "c" ] ;
function callback( $a, $b ) {
// "d"と"a"を同じ扱いにする
if ( $a == "d" ) $a = "a" ;
if ( $b == "d" ) $b = "a" ;
// 他は自然な処理
if ( $a == $b ) {
return 0 ;
} else {
return $a > $b ? 1 : -1 ;
}
}
$response = array_uintersect( $array1, $array2, "callback" ) ;
print_r( $response ) ;
参考
- PHP: array_uintersect
- PHPの公式リファレンス。
関連記事
- usort
- ユーザー定義のアルゴリズムで、配列を値でソートする。
- array_uintersect_uassoc
- ユーザー定義のアルゴリズムで、複数の配列の中から共通の要素を確認する。
- array_uintersect_assoc
- ユーザー定義のアルゴリズムで、複数の配列の中から共通の要素を確認する。
- array_udiff_uassoc
- ユーザー定義のアルゴリズムで、配列の要素の差異を確認する。
- array_intersect_ukey
- ユーザー定義のアルゴリズムで、複数の配列の中の共通のキー名を確認する。
- array_intersect_uassoc
- ユーザー定義のアルゴリズムで、複数の配列の中から共通の要素を確認する。