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

WBOY
リリース: 2024-04-28 08:06:02
オリジナル
1169 人が閲覧しました

多次元 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート