PHP では、配列の重複排除は非常に基本的なタスクの 1 つです。ただし、場合によっては、コードの再利用とメンテナンスを容易にするために配列をカプセル化する必要があります。この記事では、クラス メソッドを使用して配列重複排除メソッドをカプセル化する方法を紹介します。
まず、ArrayUtils というクラスを作成し、uniqueValues という静的メソッドを追加する必要があります。このメソッドは配列をパラメータとして受け入れ、重複を排除した配列を返します。このクラスの基本構造は次のとおりです。
class ArrayUtils { public static function uniqueValues($array) { // code here } }
次に、重複排除ロジックを作成する必要があります。 PHP には、array_unique() 関数の使用、ループや条件文の使用など、配列の重複を排除するための多くの方法が用意されています。ここでは、array_flip() 関数と array_keys() 関数を使用して重複排除を実装します。具体的には、array_flip() 関数を使用して配列内の値をキーとして別の配列に保存し、array_keys() 関数を使用してそれらのキーを重複排除された配列の内容として抽出します。以下は uniqueValues() メソッドのコードです:
public static function uniqueValues($array) { // use array_flip() and array_keys() to remove duplicate values return array_keys(array_flip($array)); }
ここでは、array_flip() 関数を使用して配列内の値をキーに変換し、それを使用して新しい配列を作成します。配列のキーは一意である必要があるため、すべての重複する値は新しい配列内の 1 つのキーに結合されます。次に、array_keys() 関数を使用して、これらのキーを重複排除された配列の内容として抽出します。
これで、ArrayUtils クラスの uniqueValues() メソッドを使用して、配列の重複を排除できるようになります。以下に例を示します。
// sample input array $fruits = array('apple', 'banana', 'orange', 'apple', 'kiwi', 'kiwi'); // remove duplicates using ArrayUtils $uniqueFruits = ArrayUtils::uniqueValues($fruits); // output unique fruits print_r($uniqueFruits);
出力結果:
Array ( [0] => apple [1] => banana [2] => orange [3] => kiwi )
ご覧のとおり、重複したエントリが削除され、エントリが 1 つだけ含まれています。
最後に、コードの読みやすさと保守性を高めるために考えられる改善点をいくつか考えてみましょう。たとえば、uniqueValues() メソッドにいくつかのパラメータを追加して、重複排除操作の詳細を制御できます。例:
public static function uniqueValues($array, $caseInsensitive = false, $preservingKeys = false) { // set flags for case-insensitive and preserving keys $flip = $caseInsensitive ? array_change_key_case($array, CASE_LOWER) : $array; $preserve = $preservingKeys ? 0 : ARRAY_FILTER_USE_KEY; // use array_flip() and array_keys() to remove duplicate values return array_keys(array_filter(array_flip($flip), $preserve)); }
ここでは、$caseInsensitive と $preservingKeys という 2 つのパラメーターを追加しました。 $caseInsensitive が true の場合、配列内の重複排除操作では大文字と小文字が区別されません。 $preservingKeys が true の場合、返される配列は元の入力配列のキーを保持します。
array_change_key_case() 関数を使用して配列キーの大文字と小文字を小文字に変換し、大文字と小文字を区別しない重複排除を実現します。また、$preservingKeys パラメーターを array_filter() 関数に渡して、保存する必要のない要素をフィルターで除外します。
要約すると、クラス メソッドを使用して配列重複排除メソッドをカプセル化すると、コードの再利用性と保守性が向上します。パラメーターと詳細な処理を追加することで、コードをより柔軟で洗練されたものにすることができます。
以上がPHP のカプセル化されたアレイの重複排除方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。