ホームページ >バックエンド開発 >PHPチュートリアル >特定のキーに基づいて PHP 多次元配列を効率的に重複排除する方法は?

特定のキーに基づいて PHP 多次元配列を効率的に重複排除する方法は?

DDD
DDDオリジナル
2024-11-25 13:13:15378ブラウズ

How to Efficiently Deduplicate a PHP Multi-Dimensional Array Based on a Specific Key?

PHP 多次元配列: 特定の値に基づく重複排除

質問:

多次元配列が与えられた場合、重複した値を含むサブ配列を効率的に削除するにはどうすればよいですか?特定のキー?

問題ステートメント:

次の多次元配列を考えてみましょう:

Array
(
[0] => Array
    (
        [0] => dave
        [1] => jones
        [2] => [email protected]
    )

[1] => Array
    (
        [0] => john
        [1] => jones
        [2] => [email protected]

    )

[2] => Array
    (
        [0] => bruce
        [1] => finkle
        [2] => [email protected]
    )
)

タスクは、サブ配列を削除することです電子メール アドレス (インデックス 2) が複数回出現します。この例では、最初または 3 番目のサブ配列のいずれかが削除されます。

解決策:

簡単な解決策には、配列の一意性を使用して重複する電子メール アドレスを排除することが含まれます。 :

$newArr = array();
foreach ($array as $val) {
    $newArr[$val[2]] = $val;    
}
$array = array_values($newArr);

このソリューションは、PHP の配列キーが一意であるという事実を利用します。電子メール アドレスを配列キーとして使用することで、特定の電子メール アドレスが最後に出現したものだけが結果の配列に保持されるようになります。

最後に array_values() を使用することで、配列のインデックスを次のようにリセットします。重複排除された状態を維持しながら、連続する番号data.

注:

  1. ここで説明するソリューションでは、最後に出現した電子メール アドレスが優先されます。最初の出現を優先したい場合は、array_reverse() を使用して配列を反復処理する前に、配列の順序を逆にします。
  2. 結果の配列内のインデックスは再配置される可能性があります。特定のインデックスに依存しない場合、これは大きな問題ではありません。

以上が特定のキーに基づいて PHP 多次元配列を効率的に重複排除する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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