$teamName, 'user' => [ [ 'user_id' => $users[$i]['user_id'], 'gender' => $users[$i]['gender'], 'avatar' => $users[$i]['avatar'], 'name' => $users[$i]['name'], ], [ 'user_id' => $users[$j]['user_id'], 'gender' => $users[$j]['gender'], 'avatar' => $users[$j]['avatar'], 'name' => $users[$j]['name'], ] ] ]); $users[$i]['team'] = $users[$j]['team'] = $teamName; } } // 对阵分配 $ttotal = count($team); // df("共 $utotal 人:"); $n = 1; for ($i = 0; $i < $ttotal; $i++) { for ($j = $i + 1; $j < $ttotal; $j++) { if (array_intersect(array_column($team[$i]['user'], 'user_id'), array_column($team[$j]['user'], 'user_id'))) { continue; //一个人不能同时在两边队伍 } $math[] = [ 'gym_id' => $game['gym_id'], 'club_id' => $game['club_id'], 'act_id' => $game['act_id'], 'game_id' => $game['id'], 'level' => 1, //轮次 'turn' => $n, //场次 'teamA' => json_encode($team[$i]), //队伍A 'teamB' => json_encode($team[$j]), //队伍B ]; // $ta =array_column($team[$i]['user'],'user_id'); // $tb =array_column($team[$j]['user'],'user_id'); // df("第 $n 场:".$ta[0].'/'.$ta[1].' VS '.$tb[0].'/'.$tb[1]); $n++; } } return $math; } // 下一轮对阵安排 public function nextLevel(Game $game, array $maths, $level): array { if ($game['rule_type'] < 15) { //15战队淘汰赛,16单项淘汰赛,17分区循环淘汰赛 return []; //只有淘汰赛才有下一轮对阵安排,其他类型比赛只有一轮 } $winner = $next = []; foreach ($maths as $m) { $winner[] = json_decode($m['winner'], true); } $total = count($winner); $n = 1; for ($i = 0; $i < $total; $i++) { for ($j = $i + 1; $j < $total; $j++) { if (array_intersect(array_column($winner[$i]['user'], 'user_id'), array_column($winner[$j]['user'], 'user_id'))) { continue; } $next[] = [ 'gym_id' => $game['gym_id'], 'club_id' => $game['club_id'], 'act_id' => $game['act_id'], 'game_id' => $game['id'], 'level' => $level, //轮次 'turn' => $n, //场次 'teamA' => json_encode($winner[$i]), //队伍A 'teamB' => json_encode($winner[$j]), //队伍B ]; $n++; } } return $next; } // 奖金分配 public function prize(array $rank): array { return $rank; } }