首页 > 解决方案 > 根据不同的值计算多维数组中的数组值

问题描述

我正在尝试根据数组中的不同值来计算数组的值。

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

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 有 Y 级 Z”(用户532 个A级)

如何从数组中提取我需要的信息?

标签: phparrays

解决方案


尝试这个 :

// Function that take you array, the id_user you want and the grade you want
function getGradeByUser ($array, $id_user, $grade) {
    $count = 0;

   // Just count how many time you get the grade for the specific user
    foreach ($array as $data) {
        if ($data['user'] == $id_user && $data['grade'] == $grade) {
            $count++;
        }
    }

    // Write down the result
    echo "User " . $id_user. " has " . $count . " grade " . $grade;
}

使用您的数组和示例,只需执行以下操作:

getGradeByUser ($array, 53, "A");

输出是:

User 53 has 2 grade A

编辑:现在,如果您想要所有信息,请执行以下操作:

// Result array
$result = array();

// I will add and count all grade by user
foreach ($array as $data) {
    if (!isset($result[$data['user']][$data['grade']])) {
        $result[$data['user']][$data['grade']] = 1;
    } else {
        $result[$data['user']][$data['grade']]++;
    }
}

// I just loop through my result array and display the information
foreach ($result as $user => $data) {
    foreach ($data as $grade => $count) {
        echo "User " . $user. " has " . $count . " grade " . $grade . "<br>";

    }
}

输出是:

User 53 has 2 grade A
User 53 has 1 grade B
User 53 has 1 grade C
User 40 has 1 grade A
User 52 has 1 grade A

推荐阅读