【问题标题】:How to get around Undefined offset: 1 - Laravel 5.2如何绕过未定义的偏移量:1 - Laravel 5.2
【发布时间】:2016-09-10 07:59:14
【问题描述】:

我现在正在开发一个 API,我正在处理我必须获得球员最后一场比赛得分的部分。通常每场比赛至少有 2 支球队或更多球队。但是我遇到了一个播放列表,其中整场比赛只有一支球队。

我是这样呼吁两支球队的比分:

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

我的问题是,在某些比赛中,只有 1 支球队,如果我加载了一个 plyers 玩家代号,并且如果那个人只与一种球队打了一场比赛(所有球员都在同一支球队),它给我这个错误:

未定义的偏移量:1

因为该玩家不存在 TeamStats[1]。

如何绕过该 API 调用并检查该值是否为空,或者它是否存在?

我尝试将其插入到(if else)语句中,并使用 (->exists(), === null, != 0, != "") 进行检查

【问题讨论】:

    标签: php json laravel


    【解决方案1】:

    当您可以在 TeamStats 上执行简单循环时,以这种方式对访问器方法进行硬编码是没有意义的

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

    这似乎是一种更有效、更简洁的方法。由于它是一个 API,您现在可以对您的数据进行简单而安全的返回

    return response()->json($Warzonescores);
    

    【讨论】:

    • 当你说$idx时,你的意思是0代表第一队,1代表第二队,对吗?就像 $Warzonescores[0]['Score']
    猜你喜欢
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2011-07-22
    • 2018-07-27
    • 2018-10-05
    相关资源
    最近更新 更多