php 一对多 多对多,用户 一对多分配 PHP

我这边有一个业务需求,就是有两种用户类别(第二种类别用户数远超第一类用户),然后需要根据他们所选的偏好和地区来进行匹配。

比如说A类用户:他们可以多选偏好,并且可以选择多个城市,例如下方示例的 userA1, userA2,

A类用户示例如下所示:

{

label:'userA1',

type:1,

like:['1', '4', '11'],

like2:['3','14','15'],

city:['1','2']

},

{

label:'userA2',

type:1,

like:['1', '11'],

like2:['3','13'],

city:['2', '3']

},

...

B类用户:他们只能选择单选偏好和城市,比如 userB1, userB2,

B类用户示例如下所示:

{

label:'userB1',

type:2,

like:"1",

like2:"3"

city:"1"

},

{

label:'userB2',

type:2,

like:"4",

like2:"7"

city:"6"

},

...

分配的时候就需要根据他们所选择的偏好来进行匹配,匹配规则:

双方用户必须匹配 city 字段;

优先双方匹配 like 字段,如果B类用户的 like 字段没有匹配到A类用户,则使用A类用户的 like2 字段来匹配,如果还没有就轮空;

每一个A类用户最多不能匹配超过5个B类用户,如果B类用户实在多,所有匹配的A类用户都匹配了5个时,继续1、2步骤进行分配直到所有B类用户分配完成。

我小伙伴的一个需求,稍微做了一下模糊处理,因为我主力语言是 Js, PHP 并不了解多少,所以提供了几个解决方案都被他否决了。

所以厚着脸皮来社区问问是不是有大佬能给个思路....

他觉得困难的地方就是A类用户三个属性都是多选的。

我说让他把A类用户按照 like 分组,添加 count 属性并以此排序,然后用B类用户一个一个去分配,如果分配成功就把对应的A类用户 count++,跑完全部 B类用户 不就好了。

但是他说不行,最后第三条规则他处理不来,最多做到不限数量分配,但是我没有 Get 到为啥不行的点,可能 Js 的编程思路和 PHP 的有点差异吧...

也许是可能会出现某一个A用户选择了全部偏好然后出现一柱擎天的情况???

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值