我想计算数组中每个重复项的出现,最后得到一个唯一的/非重复项及其各自出现的数组。
这是我的代码;但是我没有错!
<?php $array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21); //$previous[value][Occurrence] for($arr = 0; $arr < count($array); $arr++){ $current = $array[$arr]; for($n = 0; $n < count($previous); $n++){ if($current != $previous[$n][0]){// 12 is not 43 -----> TRUE if($current != $previous[count($previous)][0]){ $previous[$n++][0] = $current; $previous[$n++][1] = $counter++; } }else{ $previous[$n][1] = $counter++; unset($previous[count($previous)-1][0]); unset($previous[count($previous)-1][1]); } } } //EXPECTED VALUES echo 'No. of NON Duplicate Items: '.count($previous).'<br><br>';// 7 print_r($previous);// array( {12,1} , {21,2} , {43,6} , {66,1} , {56,1} , {78,2} , {100,1}) ?>
array_count_values, 请享用 :-)
array_count_values
$array = array(12,43,66,21,56,43,43,78,78,100,43,43,43,21); $vals = array_count_values($array); echo 'No. of NON Duplicate Items: '.count($vals).'<br><br>'; print_r($vals);
结果:
No. of NON Duplicate Items: 7 Array ( [12] => 1 [43] => 6 [66] => 1 [21] => 2 [56] => 1 [78] => 2 [100] => 1 )