我正在使用PHP中的一维数组.我想检测是否存在重复值,然后计算重复值的数量并输出结果.例如,给定以下数组:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
Run Code Online (Sandbox Code Playgroud)
我想打印:
apple (2)
orange
pear (2)
banana
kiwi (3)
Run Code Online (Sandbox Code Playgroud)
关于如何解决这个问题的任何建议?
谢谢.
麦克风
Sil*_*rom 227
您可以使用array_count_values函数
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
print_r(array_count_values($array));
Run Code Online (Sandbox Code Playgroud)
将输出
Array
(
[apple] => 2
[orange] => 1
[pear] => 2
etc...
)
Run Code Online (Sandbox Code Playgroud)
小智 105
if(count(array_unique($array))<count($array))
{
// Array has duplicates
}
else
{
// Array does not have duplicates
}
Run Code Online (Sandbox Code Playgroud)
小智 34
function array_not_unique( $a = array() )
{
return array_diff_key( $a , array_unique( $a ) );
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试将该数组转换为关联数组,其中水果作为键,出现次数为值.有点啰嗦,但看起来像:
$array = array('apple', 'orange', 'pear', 'banana', 'apple',
'pear', 'kiwi', 'kiwi', 'kiwi');
$new_array = array();
foreach ($array as $key => $value) {
if(isset($new_array[$value]))
$new_array[$value] += 1;
else
$new_array[$value] = 1;
}
foreach ($new_array as $fruit => $n) {
echo $fruit;
if($n > 1)
echo "($n)";
echo "<br />";
}
Run Code Online (Sandbox Code Playgroud)