php - 根据不同的值计算多维数组中的数组值
问题描述
我正在尝试根据数组中的不同值来计算数组的值。
这是一个示例,具有以下数组:
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”(用户53有2 个A级)
如何从数组中提取我需要的信息?
解决方案
尝试这个 :
// 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
推荐阅读
- reactjs - reactJs + Nginx + aws Fargate(docker) cors 问题
- excel - 如何在另一列中按条件分组的一列中查找下一个日期?
- java - 如何禁用 Recyclerview 中其他项目的 onTouch?
- forms - 以redux形式复制表单数组中的字段和值
- lua - 如何同时将 bool 变量设置为 true 和 false?
- ruby-on-rails - 带有 grant_type=password 的 CURL API 令牌请求
- python - 从具有相似值的numpy数组中查找给定大小的补丁
- python - Numpy数组迭代
- android - 带有 C++Builder 的 Android 的 TradioButton 模态输入框
- excel - 如何使用宏“冻结”excel中的单元格