Reputation: 2007
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
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