如何解决获取每个团队的所有 ChampionId 和 Summoner 名称的数组
我目前正在使用 Riot API 编写一个小型接口。为此,我尝试以面向对象的方式在数组中正确过滤来自 API 的数据。到目前为止,一切都适合,除了为每场比赛创建一个数组来显示谁玩过哪个冠军。
我敢在这里进行初步尝试,但不幸的是我没有进一步尝试,我可能需要帮助。
这是我的启动尝试:
public function get_matches( $summoner_name ) {
$sliced_match_ids = $this->get_match_array( $summoner_name );
$continue_match_processing = true;
foreach ( $sliced_match_ids as $match_id ) {
$array = array();
$data = $this->execute_command( '/lol/match/v4/matches/' . $match_id );
foreach ( $data->participantIdentities as $key_identities => $part ) {
if ( ! isset( $part->player ) ) {
$continue_match_processing = false;
break;
}
if ( $part->player->summonerName == $summoner_name ) {
$participant_identity = $part->participantId; //PHPcs:ignore
}
}
if ( ! $continue_match_processing ) {
continue;
}
foreach ( $data->participants as $participant ) {
if ( $participant->participantId == $participant_identity ) {
$match_array = array();
$match_array['gameDay'] = $data->gameCreation;
$match_array['gameMode'] = $data->gameMode;
$match_array['match_id'] = $match_id;
$match_array['win'] = $participant->stats->win;
$match_array['kills'] = $participant->stats->kills;
$match_array['deaths'] = $participant->stats->deaths;
$match_array['assists'] = $participant->stats->assists;
$match_array['gold'] = $participant->stats->goldEarned;
$match_array['totalMinions'] = $participant->stats->totalMinionsKilled;
$match_array['item0'] = $participant->stats->item0;
$match_array['item1'] = $participant->stats->item1;
$match_array['item2'] = $participant->stats->item2;
$match_array['item3'] = $participant->stats->item3;
$match_array['item4'] = $participant->stats->item4;
$match_array['item5'] = $participant->stats->item5;
$match_array['item6'] = $participant->stats->item6;
$match_array['spell1'] = $participant->spell1Id;
$match_array['spell2'] = $participant->spell2Id;
$match_array['championId'] = $participant->championId;
$match_array['gameDuration'] = $data->gameDuration;
$match_array['primaryRunes'] = $participant->stats->perkPrimaryStyle;
$match_array['secondaryRunes'] = $participant->stats->perkSubStyle;
$match_array['perk'] = $participant->stats->perk0;
$match_array['level'] = $participant->stats->champLevel;
$match_array['controlWard'] = $participant->stats->visionWardsBoughtInGame;
foreach ( $data->teams as $key_team => $value_team ) {
if ( $participant->teamId == $value_team->teamId ) {
foreach ( $data->participantIdentities as $key_participant => $value_participant ) {
$match_array['teams'][ $value_team->teamId ] = array( $value_participant->player->summonerName );
}
}
}
$match_list[] = $match_array;
}
}
}
return $match_list;
}
此数组可确保输出每个召唤者匹配的所有数据。在这方面,我还想用 Champion ID 保存每场比赛每队的所有召唤师。例如,可以在 op.gg 上找到比较值,情况也是如此。
我目前正在使用 PHP 和 wordpress 进行编程,对于作为初级开发人员的我来说,它应该作为一个纯粹的实践项目有效,而不是成为正式产品。
希望你能帮我。
更新
经过同事的帮助,我终于在他的帮助下完成了阵列。 结束数组如下所示:
// Team Array.
$team_array = array();
foreach ( $data->participants as $participant ) {
$team_array[ $participant->teamId ][ $participant->participantId ]['participantId'] = $participant->participantId;
$team_array[ $participant->teamId ][ $participant->participantId ]['champion_id'] = $participant->championId;
$team_array[ $participant->teamId ][ $participant->participantId ]['summonerName'] = '';
}
// Get teamId per participant.
foreach ( $data->participantIdentities as $participantIdentity ) {
foreach ( $team_array as $teamId => $team_participants ) {
foreach ( $team_participants as $team_participantId => $team_participant ) {
if ( $team_participant['participantId'] == $participantIdentity->participantId ) {
$match_array['teams'][ $teamId ][ $team_participant['participantId'] ]['summonerName'] = $participantIdentity->player->summonerName;
$match_array['teams'][ $teamId ][ $team_participant['participantId'] ]['champion_id'] = $team_participant['champion_id'];
break;
}
}
}
}
$match_list[] = $match_array;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。