PHP の開発では、配列をソートする必要があることがよくありますが、ソートされた配列に重複した要素が現れることがあります。このとき、配列から重複した要素を削除するコードを記述する必要があります。この記事では、PHP でソートされた配列から重複を削除する方法を説明します。
1. array_unique() 関数を使用する
array_unique() 関数は配列内の重複要素を削除できますが、この関数はソートされていない配列のみを処理できることに注意してください。最初にsort()やrsort()などの関数を使用して配列をソートする必要があります。
サンプル コード:
$arr = array(1, 2, 2, 3, 4, 4, 5); sort($arr);//排序 $newArr = array_unique($arr);//去重 print_r($newArr);
出力結果:
Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
元の配列のキー名を保持する必要がある場合は、array_unique() の 2 番目のパラメーターを使用できます。関数:
$arr = array('a' => 1, 'b' => 2, 'c' => 2, 'd' => 3, 'e' => 4, 'f' => 4, 'g' => 5); asort($arr);//排序 $newArr = array_unique($arr, SORT_REGULAR);//去重 print_r($newArr);
出力結果:
Array ( [a] => 1 [b] => 2 [d] => 3 [e] => 4 [g] => 5 )
2. 配列を走査して重複を削除する
ソートされた配列内の重複を削除する別の方法は、配列を走査することです。要素が見つかった場合は、unset() 関数を使用して配列から要素を削除します。
サンプルコード:
$arr = array(1, 2, 2, 3, 4, 4, 5); sort($arr);//排序 for($i=0;$i<count($arr)-1;$i++){ if($arr[$i] == $arr[$i+1]){ unset($arr[$i+1]);//删除重复元素 } } print_r($arr);
出力結果:
Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 [6] => 5 )
このメソッドを使用して要素を削除すると、元の配列のインデックスが並べ替えられることに注意してください。削除するときは、$i 1 のインデックスを使用する必要があります。そうしないと、重複した要素が失われます。
3. 配列の再帰を使用して重複を排除する
配列が多次元の場合、再帰を使用して重複を排除できます。
サンプル コード:
$arr = array( 1, 2, 2, array( 3, 4, 4, 5, array( 6, 7, 7, ), ), ); sort($arr);//排序 function uniqueArray($arr){ foreach($arr as $k => $v){ if(is_array($v)){ $arr[$k] = uniqueArray($v); } } return array_unique($arr); } $newArr = uniqueArray($arr);//递归去重 print_r($newArr);
出力結果:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [6] => 5 [9] => 6 [10] => 7 )
このメソッドは、多次元配列を重複排除し、元の配列の構造を保持できます。
結論
PHP 開発では、ソートされた配列内の重複を削除することは非常に一般的な操作です。この記事では、array_unique() 関数を使用する方法、配列を走査して削除する方法、および配列の 3 つの方法を紹介します。再帰的な重複排除。状況に応じて適した方法が異なるため、ニーズに応じて適切な方法を選択できます。
以上がPHPでソートされた配列から重複を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。