2017-08-31 86 views
2

我有一个这样的数组。 (例如变量名称是$ arr)php - 基于元素数组的条件

[ 
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' 

所以总元件2

请告知

回答

2

结合array_maparray_uniquecount

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

或使用array_column正如sahil gulati所建议的那样,array_map可以做更多的事情h可能在这里不需要。

5

希望这个最简单的将有所帮助。这里我们使用的是array_column,array_uniquecount

Try this code snippet here

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

结果:2

+2

TIL array_column存在例如... – Jakumi

+2

@Jakumi欢迎朋友。 。:) –

+2

只是说,也可以在'array_unique'处使用'array_flip'。 +1 – Thamilan

0

我有一个非常类似的需要,我用一个稍微不同的方法。

我有几个参赛队参加的比赛,我需要知道每个比赛有多少队。换句话说,我不需要知道有多少不同的项目“C”,但有多少项目TEMU3076746FCIU5412720。然后

的代码如下是

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

$nbCs将发行values = Array([TEMU3076746] => 3 [FCIU5412720] => 2)

数组见沙箱Sandbox code