ホームページ  >  記事  >  バックエンド開発  >  PHPで配列から重複データを削除する方法

PHPで配列から重複データを削除する方法

PHPz
PHPzオリジナル
2023-04-24 09:12:473939ブラウズ

PHP プログラミングでは、配列から重複データを削除する必要がある状況によく遭遇します。この記事では、この問題を解決するために一般的に使用されるいくつかの方法を紹介します。

方法 1: array_unique 関数を使用する

array_unique 関数は、配列から重複要素を削除して新しい配列を返すことができる PHP の組み込み関数です。この関数はキー名を保持しますが、キー名をリセットします。つまり、元のキー名は保持されません。例は次のとおりです。

$array = array(1, 2, 3, 3, 4, 5, 5);
$new_array = array_unique($array);
print_r($new_array);

出力:

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

方法 2: ループを使用して重複を削除します

この方法はより直接的で、配列を走査し、現在の要素は毎回出現します。以前に出現していない場合は新しい配列に追加し、そうでない場合は無視します。例は次のとおりです:

$array = array(1, 2, 3, 3, 4, 5, 5);
$new_array = array();
foreach ($array as $value) {
    if (!in_array($value, $new_array)) {
        $new_array[] = $value;
    }
}
print_r($new_array);

出力:

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

方法 3: array_flip 関数と array_keys 関数を使用する

この方法はより賢明で、array_flip を使用してキーと値を交換します。重複した値を削除した後、array_keys を使用して元の配列内のキーを取得します。例は次のとおりです。

$array = array(1, 2, 3, 3, 4, 5, 5);
$array = array_flip($array);
$array = array_flip($array);
print_r(array_keys($array));

出力:

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

このメソッドはキー名をリセットし、最初に出現した要素は重複を削除した後に保持されることに注意してください。要素のキー名は0になります。

方法 4: array_reduce 関数を使用する

この方法では、array_reduce 関数を使用して、配列を最初から最後まで走査します。各要素が出現したかどうかがチェックされます。出現していない場合は、 、新しい配列に追加されます。例は次のとおりです:

$array = array(1, 2, 3, 3, 4, 5, 5);
$new_array = array_reduce($array, function($carry, $item) {
    if (!in_array($item, $carry)) {
        $carry[] = $item;
    }
    return $carry;
}, array());
print_r($new_array);

出力:

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

このメソッドは 2 番目のパラメータとしてコールバック関数を実装する必要があることに注意してください。このコールバック関数の機能は、配列を取得し、結果として新しい配列を返します。

結論

PHP の配列から重複データを削除する方法はたくさんありますが、効率と読みやすさは同じではありません。実際の状況に基づいて最適な方法を選択することで、コードの効率と保守性を向上させることができます。

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

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