我有这样的数组。 (例如变量名是$ 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元素就是
'TEMU3076746, FCIU5412720'
所以基于C
的总元素是2。
请指教
希望这个最简单的一个会有所帮助。在这里,我们使用array_column
,array_unique
和count
。
echo count(
array_unique(
array_column($data,"C")));
结果: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可以做更多的东西,这里可能不需要。
我有一个非常相似的需求,我使用了一个略有不同的方法。
我有几个团队参与的活动,我需要知道每个活动中有多少个团队。换句话说,我不需要只知道有多少不同的项目“C”,但有多少项TEMU3076746
和FCIU5412720
。
然后代码将按原样
$nbCs = array_count_values ( array_column ( $array, 'C' ) );
$nbCs
将发布一系列values = Array([TEMU3076746] => 3 [FCIU5412720] => 2)
请参阅sandbox Sandbox code中的示例