ホームページ  >  記事  >  バックエンド開発  >  PHP は 2 次元配列から重複を削除します

PHP は 2 次元配列から重複を削除します

PHPz
PHPzオリジナル
2023-05-07 12:45:082326ブラウズ

PHP では、配列を処理して操作する必要があることがよくあります。場合によっては、配列内の重複要素を削除する必要がある場合があります。ここでは、2 次元配列の重複排除方法を説明します。

方法 1: array_map 関数とシリアル化関数を使用する

array_map 関数は配列内の各要素にコールバック関数を適用でき、コールバック関数は新しい要素を返します。シリアル化関数を使用して各要素をシリアル化し、次に PHP の array_unique 関数を使用してシリアル化された要素を重複排除し、最後にシリアル化された要素を元の要素に逆シリアル化します。

サンプル コード:

function uniqueArray($array)
{
    return array_map("unserialize", array_unique(array_map("serialize", $array)));
}

// 示例数据
$data = array(
    array("id" => 1, "name" => "apple"),
    array("id" => 2, "name" => "banana"),
    array("id" => 1, "name" => "apple"),
    array("id" => 3, "name" => "pear")
);

// 执行去重操作
$result = uniqueArray($data);

// 输出结果
print_r($result);

出力結果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
        )
    [3] => Array
        (
            [id] => 3
            [name] => pear
        )
)

上記のコードでは、まず uniqueArray 関数を定義します。この関数は、array_map 関数を使用して配列内の各要素を変換します。シリアル化してから、array_unique 関数を使用してシリアル化された要素の重複を除去し、最後に unserialize 関数を使用してシリアル化された要素を元の要素に逆シリアル化します。

方法 2: array_reduce 関数と array_merge 関数を使用する

array_map 関数と Serialize 関数を使用することに加えて、array_reduce 関数と array_merge 関数を使用して 2 次元配列内の要素を平坦化することもできます。次に、array_unique 関数を使用して 1 次元配列を重複排除し、最後に array_map 関数を使用して 1 次元配列を 2 次元配列に変換します。

サンプル コード:

function uniqueArray($array)
{
    return array_map("unserialize", array_unique(array_map("serialize", array_reduce($array, "array_merge", array()))));
}

// 示例数据
$data = array(
    array("id" => 1, "name" => "apple"),
    array("id" => 2, "name" => "banana"),
    array("id" => 1, "name" => "apple"),
    array("id" => 3, "name" => "pear")
);

// 执行去重操作
$result = uniqueArray($data);

// 输出结果
print_r($result);

出力結果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => apple
        )
    [1] => Array
        (
            [id] => 2
            [name] => banana
        )
    [3] => Array
        (
            [id] => 3
            [name] => pear
        )
)

上記のコードでは、まず uniqueArray 関数を定義します。この関数は、array_reduce 関数と array_merge 関数を使用して 2 つの関数を変換します。 -次元 配列内の要素はフラット化されて 1 次元配列を形成し、array_map 関数を使用して 1 次元配列内の要素がシリアル化、重複排除、および逆シリアル化され、最後に 1 次元配列が逆変換されます。 2次元配列に変換します。

概要

上記の 2 つの方法はどちらも 2 次元配列に対して重複排除操作を実行できますが、方法 1 ではシリアル化を使用して重複排除操作中に元のデータの型を保持します。 2 次元配列の要素を平坦化してから、1 次元配列を 2 次元配列に変換し直す必要があります。どの方法を使用するかは、実際のニーズとデータ量に基づいて選択できます。

以上がPHP は 2 次元配列から重複を削除しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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