ホームページ  >  記事  >  バックエンド開発  >  多次元PHP配列の重複要素を削除するにはどうすればよいですか?

多次元PHP配列の重複要素を削除するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-04-28 08:06:021163ブラウズ

多次元 PHP 配列内の重複要素を削除するには、array_unique() 関数またはカスタム再帰関数を使用できます。 array_unique() は内部配列を全体として処理しますが、カスタム再帰関数は配列を反復処理して要素ごとに検査します。実際の使用例では、これらのメソッドを使用して重複する電子メール アドレスを削除し、各ユーザーに 1 つの電子メールのみが送信されるようにすることができます。

如何去重多维 PHP 数组中的重复元素?

#多次元 PHP 配列内の重複要素を削除する方法

#まえがき

多次元配列を扱う場合、要素の重複の問題が発生することがあります。これにより、データに一貫性がなくなり、分析が困難になる可能性があります。この記事では、多次元 PHP 配列から重複要素を効果的に削除するいくつかの方法を紹介します。

メソッド

1 array_unique() 関数

array_unique() を使用します。 関数を使用して、1 次元配列内の重複要素を削除できます。引数として配列を受け取り、一意の要素を含む新しい配列を返します。

<?php
$arr = array(
    array(1, 2, 3),
    array(3, 4, 5),
    array(1, 2, 6),
);

$unique_arr = array_unique($arr);
print_r($unique_arr);
?>

出力:

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

この例では、

array_unique() 関数は多次元配列から重複要素を削除しません。内部配列を再帰的に繰り返すことなく、全体として処理するだけです。

2. 再帰関数を使用する

多次元配列内の重複要素を再帰的に削除するには、カスタム関数を作成する必要があります。この関数は配列を反復処理し、要素ごとにチェックします。

<?php
function remove_duplicates($arr) {
    $unique_arr = array();

    foreach ($arr as $sub_arr) {
        if (!in_array($sub_arr, $unique_arr)) {
            $unique_arr[] = $sub_arr;
        }
    }

    return $unique_arr;
}
?>

この関数を使用して多次元配列の重複を除去できるようになりました:

$unique_arr = remove_duplicates($arr);
print_r($unique_arr);

出力:

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

実用的なケース

ユーザーの電子メール アドレスを含む多次元配列があるとします。各ユーザーに 1 つの電子メールのみが送信されるようにするには、重複する電子メール アドレスを削除する必要があります。これは、上記の方法のいずれかを使用して実現できます。

array_unique() 関数を使用:

<?php
$users = array(
    array('email' => 'john@example.com'),
    array('email' => 'mary@example.com'),
    array('email' => 'john@example.com'),
);

$unique_users = array_unique($users, SORT_REGULAR);
print_r($unique_users);
?>

再帰関数を使用:

<?php
$users = array(
    array('email' => 'john@example.com'),
    array('email' => 'mary@example.com'),
    array('email' => 'john@example.com'),
);

$unique_users = remove_duplicates($users);
print_r($unique_users);
?>

2 種類すべてのメソッドは、重複した電子メール アドレスが削除された次の出力を生成します:

Array
(
    [0] => Array
        (
            [email] => john@example.com
        )
    [1] => Array
        (
            [email] => mary@example.com
        )
)

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

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