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

问题描述 投票:2回答:3

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

请指教

php arrays
3个回答
5
投票

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

Try this code snippet here

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

结果:2


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可以做更多的东西,这里可能不需要。


0
投票

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

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

然后代码将按原样

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

$nbCs将发布一系列values = Array([TEMU3076746] => 3 [FCIU5412720] => 2)

请参阅sandbox Sandbox code中的示例

© www.soinside.com 2019 - 2024. All rights reserved.