【PHP入門】array_udiff_uassoc()関数の使い方を解説!キーと値を比較して配列の差分を取得する方法
PHPのarray_udiff_uassoc()関数は、ユーザー定義のコールバック関数を使って配列の「キー」と「値」の両方を比較し、その差分を配列として返す関数です。具体的には、最初の配列に含まれていて、他の配列には存在しないすべての値を含む配列を返します。
類似の関数であるarray_diff_uassoc()との違いは、値だけでなくキーも独自のコールバック関数で柔軟に比較できる点です。
構文
array_udiff_uassoc(arr1, arr2, arr3, … , compare_func1, compare_func2)
パラメータ
arr1 − 比較元となる最初の配列。
arr2 − 比較対象となる2番目の配列。
arr3 − さらに比較したい配列(複数指定可能)。
compare_func1 − 配列のキーを比較するコールバック関数。最初の引数が2番目の引数より小さい場合は0未満の整数、等しい場合は0、大きい場合は0より大きい整数を返す必要があります。
compare_func2 − 配列の値を比較するコールバック関数。compare_func1と同様に、比較結果に応じて負の整数・0・正の整数を返します。
戻り値
array_udiff_uassoc()関数は、最初の配列に含まれていて、他のどの配列にも存在しないすべての値を含む配列を返します。
使用例
以下は、array_udiff_uassoc()関数を使って2つの連想配列を比較するサンプルコードです。
<?php
function compare_func_key($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
function compare_func_val($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$arr1 = array("a" => "laptop", "b" => "keyboard", "c" => "mouse");
$arr2 = array("a" => "laptop", "b" => "keyboard", "c" => "headphone");
$res = array_udiff_uassoc($arr1, $arr2, "compare_func_key", "compare_func_val");
print_r($res);
?>出力結果
Array ( [c] => mouse )
実行結果の解説
この例では、$arr1と$arr2を、キー用と値用の2つのコールバック関数でそれぞれ比較しています。キー「a」「b」はキー・値ともに一致しているため除外され、キー「c」の値が「mouse」と「headphone」で異なるため、[c] => mouseだけが差分として出力されます。
-
【PHP】array_rand()関数の使い方|配列からランダムなキーを取得する方法
array_rand() 関数は、配列から1つ以上のランダムなキーを取得するためのPHP組み込み関数です。配列の中から要素を無作為に選びたい場合に便利で、くじ引きやシャッフル表示などの実装によく使われます。 基本構文 array_rand(array $array, int $num = 1) パラメータ arr(第1引数):対象となる配列を指定します。 count(第2引数):取得したいランダムキーの数を指定します。省略した場合はデフォルト値の 1 が適用されます。 戻り値 array_rand() 関数は、選択されたランダムなキーを返します。 第2引数が 1 の場合(または省略した場
-
PHPのarray()関数とは?配列の作成方法をわかりやすく解説
PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に