[英]unique id user team ranking php/json
编辑我明白了:) 这当然不是优化,但它的工作原理:
$db = json_decode( file_get_contents( $location ), true );
$users = $db['users'];
$scoreTeam1 = 0;
$scoreTeam2 = 0;
$scoreTeam3 = 0;
$scoreTeam4 = 0;
foreach ($users as $user) {
$team = $user['team'];
$userScore = $user['userScore'];
switch ($team) {
case 1:
$scoreTeam1 = $scoreTeam1 + $userScore;
break;
case 2:
$scoreTeam2 = $scoreTeam2 + $userScore;
break;
case 3:
$scoreTeam3 = $scoreTeam3 + $userScore;
break;
case 4:
$scoreTeam4 = $scoreTeam4 + $userScore;
break;
}
}
初始问题我想从以下 json 文件中创建 php 中的团队排名:
"users": {
"uniqueID": {
"team": 1,
"userScore": 2500,
}, "uniqueID": {
"team": 2,
"userScore": 1235,
}, "uniqueID": {
"team": 3,
"userScore": 6582,
}, "uniqueID": {
"team": 4,
"userScore": 1200,
}, "uniqueID": {
"team": 1,
"userScore": 9875,
}, "uniqueID": {
"team": 2,
"userScore": 500,
}, "uniqueID": {
"team": 3,
"userScore": 12,
}, "uniqueID": {
"team": 4,
"userScore": 695,
}, "uniqueID": {
"team": 1,
"userScore": 332,
}, etc.
}
我有 4 个团队,我想我需要创建 4 个变量:
$scoreTeam1
$scoreTeam2
$scoreTeam3
$scoreTeam4
你能帮我翻译一下吗:对于每个唯一ID,如果团队== 1 scoreTeam1 +=userScore,否则如果团队== 2 scoreTeam2 += userScore,等等...
任何帮助都非常受欢迎:) 最好的问候。
您可以使用array_reduce函数实现您想要的功能:
$result = array_reduce($db['users'], function($carry, $team){
if (isset($carry[$team['team']]) ) {
$carry[$team['team']] = $carry[$team['team']] + $team['userScore'];
} else {
$carry[$team['team']] = $team['userScore'];
}
return $carry;
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.