如何计算带有键的数组值

5
我有一个像这样的数组,我需要按照数组值进行计数。
Array ( [Cop] => Array ( [0] => Dozen [1] => Dozen [2] => Akls [3] => Akls ) [MSN] => Array ( [0] => Dozen ) [NeK] => Array ( [0] => Suhan [1] => Ebao ) [NetSE] => Array ( [0] => SuZhan [1] => Guhang ) )

例如

 Array ( [Cop] => Array ( [0] => Dozen [1] => Dozen [2] => Akls [3] => Akls ))

在 Cop 键中,我有两个不同的 cop 值,因此我需要 cop 应该是 2
Cop - 2
MSn - 1
NeK - 2 
NetSE - 2

我需要像上面那样的计数,我该怎么做?
3个回答

5
使用 array_unique() 函数,然后计数。
count(array_unique($array['Cop']));// output 2

如果您想为每个键进行打印,请按照以下步骤操作:
$array = array('Cop'=>array('Dozen','Dozen','Akls','Akls'), 'MSN'=> array('Dozen'), 'NeK'=> array('Suhan','Ebao'));
foreach($array as $key => &$value) {
    $value = count(array_unique($array[$key]));
}
print_r($array);

输出:

Cop = 2
MSN = 1
NeK = 2

5
尝试使用array_mapcountarray_unique,例如:
array_map(function($v) {
            return count(array_unique($v));
        }, $arr);

1
你无法得到更优雅的解决方案。 - Amarnasan
1
@Uchiha 其他的选择?我猜其他回答都可以...但这个是最优雅的一个。 - Amarnasan

2
你可以使用array_count_values()来实现,以下是一个示例:
$data = array('cop' => array(0 => 'test', 1 => 'test', 2 => 'test2'));

foreach($data as $item){
    $result = array_count_values($item);
    print_r($result);
}

输出:

Array
(
    [test] => 2
    [test2] => 1
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接