PHP 言語では、配列から重複を削除する必要がある場合、この目的を達成するための方法がいくつかあります。この記事では、PHP 配列から重複を削除するのに役立ついくつかの方法とテクニックを紹介します。
PHP の array_unique() 関数を使用すると、配列内のすべての重複を一度に削除できます。この関数は引数として配列を受け取り、元の配列とは異なる値のみを含む一意の配列を返します。たとえば、次のコード スニペットは、array_unique() 関数を使用して $numbers 配列内の重複を削除する方法を示しています:
$numbers = array(1, 2, 3, 1, 4, 2, 5); $unique_numbers = array_unique($numbers); print_r($unique_numbers);
このコードの出力は次のようになります: Array ( [0] => 1 [ 1] => 2 [2] => 3 [4] => 4 [6] => 5 )
返された配列内のキー名は元のキー名と異なる場合があることに注意してください配列。元のキー名で配列を並べ替える必要がある場合は、次のように array_values() 関数を使用します。
$numbers = array(1, 2, 3, 1, 4, 2, 5); $unique_numbers = array_values(array_unique($numbers)); print_r($unique_numbers);
このコードは同じ結果を出力しますが、この場合、配列内のキー名の順序は変わります。 Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
array_unique() 関数が使用できない場合は、ループと in_array() 関数を使用して同じ関数を手動で実装できます。 in_array() 関数は、配列内の値の存在を検索し、対応するブール値を返します。 in_array() 関数と組み合わせたループを使用すると、配列全体を反復処理して、新しい配列にない値のみを保存できます。
たとえば、次のコード スニペットは、この手法の使用方法を示しています:
$numbers = array(1, 2, 3, 1, 4, 2, 5); $unique_numbers = array(); foreach($numbers as $n) { if (!in_array($n, $unique_numbers)) { $unique_numbers[] = $n; } } print_r($unique_numbers);
このコードの出力は次のようになります: Array ( [0] => 1 [1] => ; 2 [2] => 3 [4] => 4 [6] => 5 )。
このアプローチの欠点は、array_unique() 関数を使用する場合よりも多くのコードと処理時間が必要になることです。
配列内の重複を削除するもう 1 つの方法は、array_flip() 関数と array_keys() 関数を使用することです。 array_flip() 関数は新しい配列を返します。新しい配列のキーは元の配列の値であり、値は元の配列のキーのキー名です。このメソッドを使用すると、元の配列内の重複した値に関連するすべてのキーを削除できます。
次に、array_keys() 関数を使用して、重複を除外した配列を返します。
次のコードは、このメソッドの使用方法を示しています:
$numbers = array(1, 2, 3, 1, 4, 2, 5); $unique_numbers = array_keys(array_flip($numbers)); print_r($unique_numbers);
このコードの出力は次のようになります: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
このメソッドは数値または文字列の配列に対してのみ機能することに注意してください。
概要
どの方法を選択しても、PHP 配列から重複を削除するのは簡単です。この記事で説明しているように、array_unique() 関数、ループ、in_array() 関数、array_flip()、array_keys() 関数を使用してこれを実現できます。最終的に、どの方法を選択するかは、解決しようとしている問題と、運用コードで使用している PHP のバージョンによって異なります。
以上がPHPで配列から重複を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。