PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのarray_diff_uassoc()関数の使い方を徹底解説

PHPのarray_diff_uassoc()関数は、複数の配列のキーと値を比較しながら、ユーザーが定義したコールバック関数による追加チェックも行い、その差分を返す関数です。

具体的には、最初の配列に含まれている要素のうち、他のどの配列にも存在しない要素だけを集めた配列を返します。類似の関数であるarray_diff_assoc()が内部の比較処理を使うのに対し、array_diff_uassoc()ではキーの比較方法をコールバック関数で自由にカスタマイズできる点が大きな特徴です。

構文

array_diff_uassoc(arr1, arr2, arr3, arr4, …, compare_func)

パラメータ

  • arr1 − 比較元となる配列。必須です。

  • arr2 − 比較対象となる配列。必須です。

  • arr3 − さらに比較したい配列を追加できます。省略可能です。

  • arr4 − さらに比較したい配列を追加できます。省略可能です。

  • compare_func − キーを比較するためのコールバック関数です。この関数は、第1引数が第2引数より小さい場合は0未満、等しい場合は0、大きい場合は0より大きい整数を返す必要があります。

戻り値

array_diff_uassoc()関数は、最初の配列に含まれる要素のうち、他のどの配列にも存在しない要素を格納した配列を返します。キーと値の両方が比較対象となり、キーの比較には指定したコールバック関数が使用されます。

使用例

<?php
function compare_func($a, $b) {
   if ($a === $b) {
      return 0;
   }
   return ($a > $b)? 1:-1;
}
$arr1 = array("a" => "laptop", "b" => "keyboard", "c" => "mouse", "monitor");
$arr2 = array("a" => "laptop", "harddisk", "RAM", "monitor");
$res = array_diff_uassoc($arr1, $arr2, "compare_func");
print_r($res);
?>

実行結果

Array
(
[b] => keyboard
[c] => mouse
[0] => monitor
)

解説

この例では、$arr1と$arr2を比較しています。「a」=>「laptop」は両方の配列に同じキーと値で存在するため除外され、「monitor」は値こそ共通ですが、$arr2側ではキーが異なる(自動付与された数値インデックス)ため差分として残ります。その結果、「b」=>「keyboard」、「c」=>「mouse」、および「monitor」が出力されています。

なお、PHP 5.3以降ではcreate_function()の代わりに無名関数(クロージャ)を使うこともできます。また、PHP 7.4以降ではアロー関数を利用することで、より簡潔にコールバックを記述可能です。

  1. PHPのarray_diff_uassoc()関数の使い方を徹底解説

    PHPのarray_diff_uassoc()関数は、複数の配列のキーと値を比較しながら、ユーザーが定義したコールバック関数による追加チェックも行い、その差分を返す関数です。具体的には、最初の配列に含まれている要素のうち、他のどの配列にも存在しない要素だけを集めた配列を返します。類似の関数であるarray_diff_assoc()が内部の比較処理を使うのに対し、array_diff_uassoc()ではキーの比較方法をコールバック関数で自由にカスタマイズできる点が大きな特徴です。構文array_diff_uassoc(arr1, arr2, arr3, arr4, …, compare_fun

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に