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

PHPのarray_udiff()関数とは?使い方とサンプルコードを徹底解説

PHPのarray_udiff()関数は、ユーザーが定義したコールバック関数を使用して複数の配列の値を比較するための関数です。最初の配列に含まれている値のうち、他のどの配列にも存在しない値だけを集めた新しい配列を返します。

通常のarray_diff()関数との違いは、値の比較方法を自分でカスタマイズできる点にあります。大文字小文字を区別しない比較や、オブジェクト同士の独自の比較など、柔軟な処理が必要な場面で活用できます。

基本構文

array_udiff(arr1, arr2, arr3, …, compare_func)

パラメータ

  • arr1 − 比較の基準となる最初の配列です。

  • arr2 − 比較対象となる2番目の配列です。

  • arr3 − さらに比較したい配列。3つ以上の配列も指定可能です。

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

戻り値

array_udiff()関数は、最初の配列に含まれており、かつ他の配列のどこにも存在しないすべての値を含む配列を返します。キー(添字)は元の配列のものが維持される点にも注意してください。

使用例

以下は、array_udiff()関数を使った実際のコード例です。

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

実行結果

Array (
    [b] => keyboard
)

コードの解説

この例では、$arr1$arr2の値を自作のcompare_func()で比較しています。$arr2には「laptop」と「mouse」が含まれているため、これらの値は結果から除外され、「keyboard」だけが残ります。

このようにarray_udiff()関数を使えば、比較ロジックを自由に定義できるため、単純な文字列比較では対応できないケースでも差分抽出を簡単に実装できます。

  1. 【PHP】array_rand()関数の使い方|配列からランダムなキーを取得する方法

    array_rand() 関数は、配列から1つ以上のランダムなキーを取得するためのPHP組み込み関数です。配列の中から要素を無作為に選びたい場合に便利で、くじ引きやシャッフル表示などの実装によく使われます。 基本構文 array_rand(array $array, int $num = 1) パラメータ arr(第1引数):対象となる配列を指定します。 count(第2引数):取得したいランダムキーの数を指定します。省略した場合はデフォルト値の 1 が適用されます。 戻り値 array_rand() 関数は、選択されたランダムなキーを返します。 第2引数が 1 の場合(または省略した場

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

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