我需要知道数组中不同值的数量。例如,如果它包含(5,5,5)那么我应该得到1.如果它包含(4,4,2,2)我应该得到2. If(5,5,5,5,2,2,1) ,5)然后3。
是否有可以直接在PHP中实现的功能?
答案 0 :(得分:2)
echo count(array_unique($arr));
你可以使用array_unique
返回数组的唯一元素(结果也是数组类型),然后count
返回结果
答案 1 :(得分:1)
实现这一目标的两种简单方法:
$diff_count = count(array_unique($input_arr));
$diff_count = count(array_flip($input_arr));
< - 推荐(效果)array_unique():
从数组中删除重复值 - 您可以添加adittional标志,例如:
<强> array_flip()强>:
将所有键及其关联值交换到数组中 - 这样就会覆盖重复的键,并获得一个最终数组,其中唯一值为键。
将其翻转两次将导致数组具有唯一值,并且原始输入数组中的键最高。
更多阅读:
<强>基准强>:
由于array_flip仅使用O(n)更快 - 使用10,000个数字的数组作为输入:
答案 2 :(得分:0)
是否有可以直接在PHP中实现的功能?
最接近的是array_unique()
,但这是一个简单的功能,可以实现您的目标:
$arr = array(5,5,5,5,2,2,1,5);
function array_diff_values( $array ) {
return count( array_unique($array) );
}
$count = array_diff_values( $arr );
$count
的结果为3