我有这样的数组。 (例如变量名是$ arr)
[
1 => [
'A' => '1'
'C' => 'TEMU3076746'
]
2 => [
'A' => '2'
'C' => 'FCIU5412720'
]
3 => [
'A' => '3'
'C' => 'TEMU3076746'
]
4 => [
'A' => '4'
'C' => 'TEMU3076746'
]
5 => [
'A' => '5'
'C' => 'FCIU5412720'
]
]
我的目标是根据元素数组计算基于条件。
所有数组的总元素可能是这样的:count($ arr)。这是5。
但是,如何计算基于C' C'元素但不重复。 如果你能看到,C元素是
'TEMU3076746, FCIU5412720'
因此基于C
的总元素为2。
请告知
答案 0 :(得分:5)
希望这个最简单的一个会有所帮助。我们在这里使用array_column
,array_unique
和count
。
echo count(
array_unique(
array_column($data,"C")));
结果: 2
答案 1 :(得分:2)
合并array_map,array_unique,count
$array = [ /* your array */ ];
$count = count(
array_unique(
array_map(function($element) {
return $element['C'];
}, $array))))
或使用sahil gulati建议的array_column,array_map可以做更多可能不需要的东西。
答案 2 :(得分:0)
我有一个非常相似的需求,我使用了稍微不同的方法。
我有几个团队参与的活动,我需要知道每个活动中有多少个团队。换句话说,我不需要知道有多少不同的项目" C"有,但有多少项TEMU3076746
和FCIU5412720
。
代码将按原样
$nbCs = array_count_values ( array_column ( $array, 'C' ) );
$nbCs
会发出一个values = Array([TEMU3076746] => 3 [FCIU5412720] => 2)
请参阅沙箱Sandbox code
中的示例