簡體   English   中英

唯一 id 用戶團隊排名 php/json

[英]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 個變量:

  1. $scoreTeam1
  2. $scoreTeam2
  3. $scoreTeam3
  4. $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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM