David
David

Reputation: 2007

How to get around 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, != "")

Upvotes: 0

Views: 240

Answers (1)

Ohgodwhy
Ohgodwhy

Reputation: 50798

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

Upvotes: 1

Related Questions