用户创建账号并将其分配到组中,预先设置了组限制,假设为5。
示例:前5个用户已保存到group_id = 1,那么如何使第6个用户已保存到第2组?
UserGroups::insert([
'user_id' => $user,
'game_id' => $gameId,
'group_id' => 1
]);如何对某些组进行动态处理,比如group_id = 3..4..5..6等等?
示例代码:
$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
]);
}这只是两个组的工作-如何使其动态化?
谢谢你们!
发布于 2017-12-11 16:15:15
<?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和用户的值。
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
)
)发布于 2017-12-16 15:21:49
如果我理解你的问题,你正在寻找这个解决方案:
$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;我已经完美地测试了它的工作。祝你的项目好运:)
https://stackoverflow.com/questions/47748427
复制相似问题