唯一id用户团队排名php/json

唯一id用户团队排名php/json,php,json,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 = $

编辑 我明白了:) 这当然不是优化,但它可以工作:

$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
  • 你能帮我翻译一下吗: 对于每个唯一的 如果团队==1得分团队1+=userScore, 否则,如果团队==2 scoresteam2+=userScore, 等等

    欢迎任何帮助:)
    致以最诚挚的问候。

    您可以通过以下功能实现您想要的:

    $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;
    });