SYNCERのロゴ
アイキャッチ画像

array_diff_uassoc - ユーザー定義のアルゴリズムで、配列の要素の差異を確認する

array_diff_uassocは、array_diff_assocと同じく配列の要素(キーと値の組み合わせ)の差異を調べる関数です。ただし、ユーザーが定義したコールバック関数を通して、差異が判定されます。

構文

array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )

パラメータ

$array1

基本の配列。

$array2

比較対象となる配列。

$...

3つ以上の配列を比較したい場合、第3引数、第4引数、と指定できる。

$key_compare_func

int callback ( mixed $a, mixed $b )

差異を判定するための比較関数を最後の引数として指定する。このコールバック関数は比較対象の2つの値を受け取る。関数が0を返した時に同じ、正の数を返した時に第1引数の方が大きい、負の数を返した時に第1引数の方が小さい、と判定される。

返り値

array

第1引数の配列にはあって、第2引数以降に指定した配列にはないキーの要素を集めた配列。

サンプルコード

<?php
	$array1 = [ "red", "green", "yellow", "purple" ] ;
	$array2 = [ "red", "green", "purple", "yellow" ] ;

	function key_compare_func( $a, $b ) {
    if ($a === $b) return 0 ;
    return $a > $b ? 1 : -1 ;
	}

	$response = array_diff_uassoc( $array1, $array2, "key_compare_func" ) ;

デモ

array_diff_assocと同じアルゴリズムにするには次の通りです。

<?php
/*** このコードは編集できます。 ***/

	$array1 = [ "red", "green", "yellow", "purple" ] ;
	$array2 = [ "red", "green", "purple", "yellow" ] ;

	function key_compare_func( $a, $b ) {
    if ($a === $b) return 0 ;
    return $a > $b ? 1 : -1 ;
	}

	$response = array_diff_uassoc( $array1, $array2, "key_compare_func" ) ;

	var_dump( $response ) ;
array(2) {
  [2]=>
  string(6) "yellow"
  [3]=>
  string(6) "purple"
}
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月21日 (水)
コンテンツを公開しました。