计数数组DISTINCT高于1

时间:2017-07-01 16:00:45

标签: php mysql arrays cakephp

如果customer_id存在超过1,我该如何计算。

因为我只想知道数字是否存在超过1次。

 $customerOrder = $this->Order->find('all', array(
                'conditions' => array(
                    'Order.customer_id >' => '0',
                    'Order.status' => 'Delivered'
                )
            ));
 $b = array_unique($customerOrder);
Echo Count(array_unique(array_diff_key($customerOrder, $b)));

至少我应该得到3: 它应该给出100左右的结果。这是列表的一个小屏幕截图:enter image description here

3 个答案:

答案 0 :(得分:0)

您可以使用array_count_values

function greaterNum($var)
{
    return($var>=2);
}

$array = array(1,2,3,3,3,4,1);
$counts = array_count_values($array);
print_r(array_filter($counts,"greaterNum"));

它会返回

Array
(
    [1] => 2
    [3] => 3
)

键表示原始数组的值,value表示原始数组中出现的次数。

 print(count(array_filter(array_count_values($array),"greaterNum")));

它会打印2

答案 1 :(得分:0)

尝试使用array_count_values这样的方式来查找出现的值多少次? ,查看 $ result 的结果,以便清楚了解,然后使用foreach循环或array_filter或任何其他方式仅获取出现次数大于 2的值次。

<?php
$values = array(1,2,3,3,3,4,1,8,0,0,9,8);
$result = array_count_values($values);

//debugging
print '<pre>';
print_r($result);
print '</pre>';

$count = 0;
foreach($result as $count_value){
    if($count_value >= 2){
       $count++;
    }
}

echo $count;
?>

答案 2 :(得分:0)

这种方法怎么样?数组唯一,数组差异键和计数。

$a = array(1,2,3,3,3,4,1,1,3,2);
$b = array_unique($a);


Echo Count(array_unique(array_diff_key($a, $b)));

https://3v4l.org/La1mN