配列に重複した値が含まれていることを確認する効率的な方法は何ですか? メールを含む配列があります。email-id の繰り返しがあるかどうかを知りたいです。
更新:繰り返しの値には興味がありません。「重複値を含む」か「重複値を含まない」か知りたいです。
これを試して:
if (count(array_unique($arr)) == count($arr))
echo "Array does not contain duplicate elements";
else
echo "Array contains duplicate elements";
大文字と小文字を区別しない配列の一意の値が必要な場合は、以下を試してください
function array_iunique($array) {
return array_intersect_key($array,array_unique(
array_map('strtolower',$array) ) );
}
$array[1] = "test@google.com";
$array[2] = "test@hotmail.com";
$array[3] = "TEST@google.com";
$array[4] = "Test@hotmail.com";
//print_r(array_unique($array));
print_r(array_iunique($array));
// 結果配列 ( [1] => test@google.com [2] => test@hotmail.com )
これは、配列から重複した値を抽出する方法です
<?php
function array_not_unique( $a = array() )
{
return array_diff_key( $a , array_unique( $a ) );
}
?>
重複したエントリを返します。最も簡単で効率的な方法です。
投稿を編集したときに、重複があるかどうかだけを知る最も効率的な方法は、最も提案されている方法です。
count(array_unique($array)) == count($array)
非常に効率的な簡単な方法は、配列を一意にしてから、それを元の配列と比較して、要素が削除されているかどうかを確認することです。
count(array_unique($emails)) == count($emails)
メソッドを使用array_count_values()
して、要素の出現回数を見つける必要があります。簡単で効率的な方法です。
$array = array('a', 'o', 'p', 'b', 'a', 'p', 'k', 'k', 'k');
print_r(array_count_values($array));
出力
Array
(
[a] => 2
[o] => 1
[p] => 2
etc...
)