douxiong3245
2016-05-14 01:37 浏览 66
已采纳

如何绕过Undefined offset:1 - Laravel 5.2

I'am working on a API right now, and I'm on a part where I have to get a Players last matches score. Usually there are ATLEAST 2 teams in every match OR more. But I came across a playlist where there is only 1 team for the whole match.

I'am calling for the score of both teams like this:

        // Get the Score AND Team ID of First team
        $Warzonescore = $warzoneLastMatch->TeamStats[0]->Score;
        $WarzonescoreTeamId = $warzoneLastMatch->TeamStats[0]->TeamId;


        // Get the Score AND Team ID of Second team
        $Warzonescore2 = $warzoneLastMatch->TeamStats[1]->Score;
        $Warzonescore2TeamId = $warzoneLastMatch->TeamStats[1]->TeamId;

My problem is, in some matches, there is only 1 team, and if I load up a plyers gamertag, and if that person only played a match with one kind of team ( all players are on the same team), it gives me this error:

Undefined offset: 1

because TeamStats[1] does not exist for that player.

How can I get around that API call and check if that value is null, or if it exists?

I tried to insert it into a (if else) statement, and checked with ( ->exists(), === null, != 0, != "")

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答 默认 最新

  • 已采纳
    dryb38654 dryb38654 2016-05-14 01:58

    Doesn't make sense to hardcode your accessor methods in this way when you can do a simple loop on TeamStats

    $Warzonescores = [];
    foreach($warzoneLastMatch->TeamStats as $idx => $stats){
        $Warzonescores[$idx]['Score'] = $stats->Score;
        $warzonescores[$idx]['TeamId'] = $stats->TeamId
    }
    

    This seems like a more efficient and clean way to go about your approach. As it's an API, you can now do a simple and safe return on your data

    return response()->json($Warzonescores);
    
    点赞 评论 复制链接分享

相关推荐