Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 在拉威尔获得已完成的项目总数_Laravel - Fatal编程技术网

Laravel 在拉威尔获得已完成的项目总数

Laravel 在拉威尔获得已完成的项目总数,laravel,Laravel,我试图计算游戏中已完成活动的数量。举个例子,我把网球、板球和高尔夫作为我的运动,在每一项运动中都有活动和小组 比如说,我的网球成绩是5分 下面是数据结构 "Tennis": { "group":{ "Group 1": { "name": "Group name 1", "activities": { "activity 1": { "completed

我试图计算游戏中已完成活动的数量。举个例子,我把网球、板球和高尔夫作为我的运动,在每一项运动中都有活动和小组

比如说,我的网球成绩是5分

下面是数据结构

"Tennis": {
    "group":{
        "Group 1": {
            "name": "Group name 1",
            "activities": {
                "activity 1": {
                    "completed" : 1
                },
                "activity 2": {
                    "completed" : 0
                }
            }
        },
        "Group 2": {
            "name": "Group name 2",
            "activities": {
                "activity 1": {
                    "completed" : 1
                },
                "activity 2": {
                    "completed" : 3
                }
            }
        }
    }
}

"Cricket": {
    "group":{
        "Group 1": {
            "name": "Group name 1",
            "activities": {
                "activity 1": {
                    "completed" : 1
                },
                "activity 2": {
                    "completed" : 0
                }
            }
        },
        "Group 2": {
            "name": "Group name 2",
            "activities": {
                "activity 1": {
                    "completed" : 1
                },
                "activity 2": {
                    "completed" : 3
                }
            }
        }
    }
}

"Golf": {
    "group":{
        "Group 1": {
            "name": "Group name 1",
            "activities": {
                "activity 1": {
                    "completed" : 1
                },
                "activity 2": {
                    "completed" : 0
                }
            }
        },
        "Group 2": {
            "name": "Group name 2",
            "activities": {
                "activity 1": {
                    "completed" : 1
                },
                "activity 2": {
                    "completed" : 3
                }
            }
        }
    }
}
我的代码

$result = [];

foreach($games->getGroups as $key => $group)
{
    foreach($group->getActivites as $code => $activity)
    {
        $result[$code] = $activity->getComplete();
    }
}

return $result;
在我的Activity.php中

public function getComplete(): float
{
    return $this->complete;
}
我一直在努力想我该怎么做。我也在使用laravel。

你可以利用laravel+


在每个组的活动上使用一个略短的方法,从而减少了一个嵌套的可调用方法:

收集$games->mapfunction$物品{ 返回收集$item->group->map->activities->sumfunction$item{ 返回收集$item->sum'completed'; }; }->托雷;
显示正确的代码now@chojnicki-对不起。我已经更新了我的问题。在运行代码后,您能告诉我们$result中的内容吗?
collect($games)->map(function($game){
    return collect($game['groups'])->map(function($group){
        return collect($group['activities'])->map(function($activity){
            return $activity['completed'];
        })->sum(); // sum of all the activities
    })->sum(); // sum of all the groups in a game -- this is what you are looking for
})->toArray();