ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列内のデータの重複排除を実現するにはどうすればよいですか?

PHP 配列内のデータの重複排除を実現するにはどうすればよいですか?

王林
王林オリジナル
2024-04-26 18:51:021094ブラウズ

PHP 配列の重複を排除する 3 つの方法: array_unique() 関数を使用して、要素値に基づいて重複値を削除し、キー値の順序を保持します。 array_filter() 関数を使用して、コールバック関数の条件に基づいて重複要素を削除します。 SplObjectStorage クラスを使用して、オブジェクトの一意性を利用して配列の重複排除を実現し、キーと値の関連付けを保持します。

如何实现 PHP 数组中数据的去重?

PHP 配列内のデータの重複排除を実現する方法

配列の重複排除とは、配列内の重複する値を削除し、一意のみを含む新しい値を取得することを指します。値の配列。 PHP には、配列の重複排除を実現するためのいくつかの方法が用意されています。

Use array_unique() Function

array_unique() は組み込み関数であり、特に使用されます。配列から重複した値を削除します。各要素の値に基づいて比較し、一意の要素のみを含む新しい配列を返します。構文は次のとおりです。

array_unique(array $array);

例:

$numbers = [1, 2, 3, 4, 5, 1, 2, 3];
$unique_numbers = array_unique($numbers);
print_r($unique_numbers);

出力:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

注: array_unique( ) キー値の順序は保持されますが、必要に応じて、array_values() 関数を使用して、保持されたキー値を連続した番号に変更できます。

使用 array_filter() 関数

array_filter() この関数は、コールバック関数の条件に基づいて配列から特定の要素を削除できます。コールバック関数の戻り値 true を満たす要素を配列内に保持し、他の要素をフィルターで除外します。

例:

$numbers = [1, 2, 3, 4, 5, 1, 2, 3];
$unique_numbers = array_filter($numbers, function($value, $index) {
    return array_search($value, $numbers) === $index;
});
print_r($unique_numbers);

出力:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
)

注: このコールバック関数は、配列内の各要素の出現をチェックします。最初のインデックスが現在のインデックスと同じかどうかを調べて、一意の値であるかどうかを判断します。

SplObjectStorage クラスの使用

#SplObjectStorage クラスは、オブジェクトのコレクションを格納するためのより高度なコンテナです。これをハッシュ テーブルとして使用できます。オブジェクトがキーとなり、関連付けられた値が保持値となります。ハッシュ テーブルでは重複キーが許可されないため、SplObjectStorage を使用して配列の重複排除を実現できます。

例:

$numbers = [1, 2, 3, 4, 5, 1, 2, 3];
$unique_numbers = new SplObjectStorage();

foreach ($numbers as $number) {
    $unique_numbers->attach($number);
}

foreach ($unique_numbers as $number) {
    echo $number . "\n";
}

出力:

1
2
3
4
5

注: このメソッドは、オブジェクトを繰り返すことができないという事実を利用します。 。 SplObjectStorage のキーは、各オブジェクトの ID が異なるため一意ではありません。したがって、配列から重複した値を効果的に削除できます。

以上がPHP 配列内のデータの重複排除を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。