根据不同的值对多维数组中的数组值进行计数

时间:2018-09-13 14:11:42

标签: php arrays

我正在尝试根据数组中的另一个值对数组的值进行计数。

这是一个示例,带有以下数组:

Array
(
    [0] => Array
        (
            [user] => 53
            [grade] => A
        )

    [1] => Array
        (
            [user] => 40
            [grade] => A
        )

    [2] => Array
        (
            [user] => 53
            [grade] => A
        )

    [3] => Array
        (
            [user] => 53
            [grade] => B
        )

    [4] => Array
        (
            [user] => 53
            [grade] => C
        )

    [5] => Array
        (
            [user] => 52
            [grade] => A
        )
)

我需要一种为特定用户计算所有特定成绩的方法。

我的第一个想法是array_count_values(),它只能为我提供特定等级的总金额,而不是基于用户。除了这个想法,我再也想不出来了,并且很难找到一个很好的搜索词来尝试找到解决方案。

我需要说“用户X的Z等级为Y的数量”(用户 53 的等级为 2 A

如何从阵列中提取所需的信息?

1 个答案:

答案 0 :(得分:0)

我想避免解决方案的大量循环,因为我的生产数据可能会包含数十个用户,每个用户的等级都不同。

这是我想出的:

浏览一次我所有的结果,然后将它们分类为键,键是用户ID,内容是该用户每个年级的计数(在评论中提到了deceze之类的排序)

define()

现在,我可以通过执行以下操作来访问每个用户的数目:$grouped = []; foreach($results as $result) { $grouped[$result['user']][$result['grade']]++; } ,所以我只是将所有信息都转换为适合我所需应用程序的正确格式:

$grouped[USERID][GRADE]