首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php统计行数并分组为一组

Php统计行数并分组为一组
EN

Stack Overflow用户
提问于 2017-12-11 15:48:09
回答 2查看 77关注 0票数 0

用户创建账号并将其分配到组中,预先设置了组限制,假设为5。

示例:前5个用户已保存到group_id = 1,那么如何使第6个用户已保存到第2组?

代码语言:javascript
复制
UserGroups::insert([
    'user_id' => $user,
    'game_id' => $gameId,
    'group_id' => 1
]);

如何对某些组进行动态处理,比如group_id = 3..4..5..6等等?

示例代码:

代码语言:javascript
复制
$groupSize = 2;
$allUserGroups = 4;

if($groupSize < $allUserGroups) {
UserGroups::insert([
    'user_id' => $user,
    'game_id' => $gameId,
    'group_id' => 1
]);
} else {
    UserGroups::insert([
        'user_id' => $user,
        'game_id' => $gameId,
        'group_id' => 2
    ]);
}

这只是两个组的工作-如何使其动态化?

谢谢你们!

EN

回答 2

Stack Overflow用户

发布于 2017-12-11 16:15:15

代码语言:javascript
复制
<?php
$arrayUsers=['user1','user2','user3','user4','user5',
    'user6','user7','user8','user9','user10',
    'user11','user12','user13','user14','user15'];


$group_id=1;

echo'<pre>';
$groupedUser=array_chunk($arrayUsers, 5);

foreach($groupedUser as $data ){
    $newArray[$group_id]=$data ;
    $group_id++;
}

print_r($newArray);

因此,让我们假设您的用户在我创建的数组中。array_chunk会将它们按你想要的数量分组。正如你在问题中所说的,我将它们分成5个一组,然后为了创建动态组,我只使用了一个计数器,每当我的数组字段满了(5条记录),我就会递增1。在输出中,您将获得一个多维数组,其中包含键、group_id和用户的值。

代码语言:javascript
复制
Array
(
    [1] => Array
        (
            [0] => user1
            [1] => user2
            [2] => user3
            [3] => user4
            [4] => user5
        )

    [2] => Array
        (
            [0] => user6
            [1] => user7
            [2] => user8
            [3] => user9
            [4] => user10
        )

    [3] => Array
        (
            [0] => user11
            [1] => user12
            [2] => user13
            [3] => user14
            [4] => user15
        )

)
票数 0
EN

Stack Overflow用户

发布于 2017-12-16 15:21:49

如果我理解你的问题,你正在寻找这个解决方案:

代码语言:javascript
复制
$getgroups = UserGroups::select('group_id',DB::raw('count(group_id) as count'))->groupby('group_id')->get();
    $getgroups = json_decode(json_encode($getgroups),true);
    if(!empty($getgroups)){
        end($getgroups); 
        $key = key($getgroups);
        $group = $getgroups[$key];
        if($group['count'] <5){
            UserGroups::insert([
                'user_id' => $user,
                'game_id' => $gameId,
                'group_id' => $group['group_id']
            ]);
        }else{
            $groupvalue = $group['group_id'] +1;
            UserGroups::insert([
                'user_id' => $user,
                'game_id' => $gameId,
                'group_id' => $groupvalue
            ]);
        }
    }else{
        UserGroups::insert([
                'user_id' => $user,
                'game_id' => $gameId,
                'group_id' => 1
            ]);
    }
    echo "saved"; die;

我已经完美地测试了它的工作。祝你的项目好运:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47748427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档