クロージャーを使用してカスタム比較ルールを定義し、配列をマージおよび重複除去します。クロージャーは 2 つの要素を受け入れ、等しい要素が破棄されることを示すブール値を返します。配列を走査し、クロージャを使用して重複排除することにより、最終的にカスタム ルールによる配列のマージと重複排除が実装されます。
PHP 配列のマージと重複排除アルゴリズム: クロージャに基づくカスタム ルール
PHP 開発では、配列と重複をマージする必要があることがよくあります。重複を削除します。ただし、デフォルトの array_merge()
関数は、特にマージされた要素をカスタム ルールに従って重複排除する必要がある場合、すべてのシナリオを満たすことができません。この記事では、カスタム ルールを使用して配列のマージと重複排除の操作を実装するためのクロージャ ベースのアルゴリズムを紹介します。
アルゴリズム原理
このアルゴリズムは、クロージャを比較関数として使用することにより、カスタム重複排除ルールを実装します。クロージャは 2 つの要素をパラメータとして受け取り、2 つの要素が等しいかどうかを示すブール値を返します。クロージャによって 2 つの要素が等しいと判断された場合、そのうちの 1 つだけが保持されます。
コードの実装
function array_merge_distinct(array $arr1, array $arr2, callable $compare_func) { $result = []; foreach ($arr1 as $key => $value) { $found = false; foreach ($arr2 as $key2 => $value2) { if ($compare_func($value, $value2)) { $found = true; break; } } if (!$found) { $result[$key] = $value; } } return array_merge($result, $arr2); }
実践的なケース
2 つの配列があるとします。
$arr1 = ['a', 'b', 'c']; $arr2 = ['b', 'd', 'e'];
We Arraysは、次のルールに従ってマージおよび重複排除されます。
この比較ルールはクロージャを使用して実装できます:
$compare_func = function ($value1, $value2) { return $value1 === $value2; };
次に、クロージャをパラメータとして array_merge_distinct()
関数に渡します:
$merged = array_merge_distinct($arr1, $arr2, $compare_func);
マージされた配列は次のとおりです:
echo print_r($merged, true);
出力:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e )
拡張機能
アルゴリズムは、より複雑な比較ルールをサポートするために、必要に応じて拡張できます。またはカスタム動作。たとえば、オブジェクトのプロパティに基づいて比較したり、要素のハッシュ値に基づいて重複を削除したりできます。
以上がPHP 配列のマージおよび重複排除アルゴリズム: クロージャに基づくカスタム ルールの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。