dongtiandexue123456 2018-08-11 11:51
浏览 59

Laravel从集合中提取元素并对其进行排序

i have a Collection like that:

+----------+----------+
| user_id  |  city_id |
+----------+----------+
|        1 |        1 |
|        2 |        1 |
|      ... |      ... |
|      901 |        2 |
|      902 |        2 |
|      ... |      ... |
|     1501 |        3 |
|     1502 |        3 |
|      ... |      ... |
+----------+----------+

in this example i have

900 users for city_id = 1
600 users for city_id = 2
300 users for city_id = 3

what i want to do:

Sort each user in a fair way, so that I end up with a list like this:

+---------+----------+
| user_id |  city_id |
+---------+----------+
|       1 |        1 |
|       2 |        1 |
|       3 |        1 |
|     901 |        2 |
|     902 |        2 |
|    1501 |        3 |
|       4 |        1 |
|       5 |        1 |
|       6 |        1 |
|     903 |        2 |
|     904 |        2 |
|    1502 |        3 |
+---------+----------+

I divided everything by 300 (for example), so i have by day:

3 users from city 1
then 2 users from city 2
then 1 user from city 3
then 3 users from city 1
then 2 users from city 2
then 1 user from city 3
...

I tried to use the take() function but it doesnt modify the original collection. And i used the shift() function but it just take one item.

i tried that code:

while($users->isNotEmpty()){
    // $user->count() = 1800
    for ($i=0; $i<3; $i++){
        $final->push($users->where('city_id', 1)->shift());
    }
    for ($i=0; $i<2; $i++){
        $final->push($users->where('city_id', 2)->shift());
    }
    $final->push($users->where('city_id', 3)->shift());

    // $user->count() = 1800; $final->count() = 6
}

it doesn't shift element from $user collection. still have 1800 elements...

Thanks !

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
    • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
    • ¥16 mybatis的代理对象无法通过@Autowired装填
    • ¥15 可见光定位matlab仿真
    • ¥15 arduino 四自由度机械臂
    • ¥15 wordpress 产品图片 GIF 没法显示
    • ¥15 求三国群英传pl国战时间的修改方法
    • ¥15 matlab代码代写,需写出详细代码,代价私
    • ¥15 ROS系统搭建请教(跨境电商用途)
    • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。