php - 基于元素数组的基于条件的条件

时间:2017-08-31 09:50:46

标签: php arrays

我有这样的数组。 (例如变量名是$ 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。

请告知

3 个答案:

答案 0 :(得分:5)

希望这个最简单的一个会有所帮助。我们在这里使用array_columnarray_uniquecount

Try this code snippet here

echo count(
        array_unique(
                array_column($data,"C")));

结果: 2

答案 1 :(得分:2)

合并array_maparray_uniquecount

$array = [ /* your array */ ];
$count = count(
    array_unique(
        array_map(function($element) { 
            return $element['C']; 
        }, $array))))

或使用sahil gulati建议的array_column,array_map可以做更多可能不需要的东西。

答案 2 :(得分:0)

我有一个非常相似的需求,我使用了稍微不同的方法。

我有几个团队参与的活动,我需要知道每个活动中有多少个团队。换句话说,我不需要知道有多少不同的项目" C"有,但有多少项TEMU3076746FCIU5412720

代码将按原样

$nbCs = array_count_values ( array_column ( $array, 'C' ) );

$nbCs会发出一个values = Array([TEMU3076746] => 3 [FCIU5412720] => 2)

数组

请参阅沙箱Sandbox code

中的示例