• 一、需求
  • 二、代码
  • 三、打印

一、需求

根据用户规则计算用户等级,规则如下

  • 1、用户登录天数 >= 10,用户等级为 1
  • 2、用户登录天数 >= 20,用户等级为 2
  • 3、用户登录天数 >= 30,用户等级为 3

二、代码

//根据配置的规则,计算用户的等级
public function test() {//用户数据$userData = [['id' => '1', 'name' => '用户1', 'days' => 9],['id' => '2', 'name' => '用户2', 'days' => 19],['id' => '3', 'name' => '用户3', 'days' => 29],['id' => '4', 'name' => '用户4', 'days' => 39],];//用户等级规则数组$rule = [['days' => 10, 'level' => 1],['days' => 30, 'level' => 3],['days' => 20, 'level' => 2],];//根据等级$level降序二维数组$rule$levels = array_column($rule, 'level');array_multisort($levels, SORT_DESC, $rule);//循环处理用户数据,根据等级规则计算用户等级foreach ($userData as &$user) {$userLevel = 0; //用户等级默认为0foreach ($rule as $level) { //循环用户等级规则//如果用户登录的天数大于等于等级规则的天数,则设置用户的等级为对应等级规则的等级,跳出该循环if ($user['days'] >= $level['days']) {  //注意:规则必须是降序的,如果是升序的,该判断会导致结果出问题$userLevel = $level['level'];break;}}$user['level'] = $userLevel;}//打印结果数据var_export($userData);
}

三、打印

  • 鼠标右键,查看 页面源代码
array (0 => array ('id' => '1','name' => '用户1','days' => 9,'level' => 0,),1 => array ('id' => '2','name' => '用户2','days' => 19,'level' => 1,),2 => array ('id' => '3','name' => '用户3','days' => 29,'level' => 2,),3 => array ('id' => '4','name' => '用户4','days' => 39,'level' => 3,),
)

PHP根据配置的规则,计算用户的等级相关推荐

  1. 双十一|又快又稳!闲鱼实时事件规则计算驱动平台

    闲鱼双十一金鳞抽奖玩法 相信今年在11月7日-11月11日期间使用过闲鱼的用户,可能已经被如下图所示的幸运海星"砸"到过了.只要用户进入到指定的几个页面,或者在某些指定的页面有点击 ...

  2. 邮件服务配置(虚拟域虚拟用户)

    邮件服务配置(虚拟域&虚拟用户) 本文首发:https://www.somata.net/2019/virtual_mail_server_config_with_mariadb.html 现 ...

  3. grafanaprometheus 快速配置报警规则及报警接收

    系列文章目录 1.使用helm快速安装 grafana&prometheus 2.利用grafana&prometheus 快速配置 k8s & 主机监控 3.grafana& ...

  4. 网站服务器还未配置伪静态规则,服务器设置伪静态规则

    服务器设置伪静态规则 内容精选 换一换 如果要自定义裸金属服务器的DNS服务器信息,需要将裸金属服务器网络设置为静态IP.若将动态DHCP改为静态IP设置,IP和网关等网络信息必须和裸金属服务器下发时 ...

  5. EXCEL通过配置导入规则,实现任意格式EXCEL文件解析

    EXCEL文件导入到数据库,是一种常见的文件导入格式. 本文实现的EXCEL文件解析方法,优点是适合任意格式的EXCEL文件,缺点是每一张表单都需要配置对应的导入规则,在字段数量多时,配置导入规则就尴 ...

  6. zuul动态配置路由规则,从DB读取

    前面已经讲过zuul在application.yml里配置路由规则,将用户请求分发至不同微服务的例子. zuul作为一个网关,是用户请求的入口,担当鉴权.转发的重任,理应保持高可用性和具备动态配置的能 ...

  7. Eslint 配置及规则说明

    一.常用配置 先附上本人常用配置,在 .eslintrc.js 文件中: rules: {'no-console': process.env.NODE_ENV === 'production' ? ' ...

  8. Deepin/Linux系统使用GUFW可视化管理、配置防火墙规则

    对于没有接触过 Linux 的人,配置防火墙难于上青天,即便是缙哥哥这样玩过一丢丢的,也不喜欢用命令控制.所以,今天就给大家带来一款Deepin/Linux系统可视化管理.配置防火墙规则的软件--GU ...

  9. Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金

    **3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票.程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金 题目 题目概述 破题 代码 题目 题目概述 **3.15(游戏:彩票) ...

  10. MySQL学习_计算用户支付方式占比_20161104

    计算用户支付方式占比 SELECT b.*#根据城市ID 年月排序 FROM (SELECT a.*FROM ( #纵向合并SELECT b1.ID,a1.城市,a1.收款方式,DATE_FORMAT ...

最新文章

  1. ffmpeg-20160526-git-bin
  2. python组合类型有哪三种_Python基础语法三组合数据类型
  3. 5u fb库 三菱plc_三菱FX5U PLC入门必备基础知识特点
  4. php pcntl 多进程学习
  5. android jni framework,Android Framework层的JNI机制(二)
  6. oracle ora-14404,分区表的分区表空间不同引起的删除表空间错误
  7. 机器学习模型可解释性进行到底——特征重要性(四)
  8. html内容写入txt文件内容,写入内容到文件里面 - FileWriter《 HTML5:文件系统 》
  9. WWF全球河流数据HydroRIVERS
  10. 让子弹飞,是什么意思?
  11. BUUCTF_Misc题目题解记录
  12. Pocket PC模拟器设置上网
  13. win10 C盘右边是OEM分区扩容的解决办法
  14. 开源至上:面试官轮轮虐你?深入剖析
  15. python数据分析师 前景_数据分析师的前景怎么样? 本人是程序员,最近对数据分析有兴趣……...
  16. 资深SRE带你看阿里云香港故障
  17. 在一个已经EXIT的docker容器中,修改配置文件
  18. Excel VBA 金融建模 培训
  19. 计算机与信息科学学院英语,湖南工学院计算机与信息科学学院英语协会
  20. 苹果M1芯片的Mac怎么关闭SIP?M1 mac关闭Sip方法教程!

热门文章

  1. GIS教程-空间分析之水文分析
  2. wcf 接收post数据_简单聊下HTTP中POST和GET请求本质区别
  3. 重装上阵两个人合体机器人_又一部热门定档!林超贤、彭于晏领衔《紧急救援》重装定档2021年大年初一...
  4. spring java 定时任务_spring定时任务的几种实现方式
  5. 关于app跳转vueh5页面时获取url附带的参数_h5唤起app技术deeplink方案总结
  6. linux生成手机号码字典,Linux下的字典生成工具Crunch 创造自己的专属字典
  7. Web设计-提交前的对话框
  8. php workman实现socket服务及客户端连接
  9. rocketmq底层通信模块解析
  10. (万字长文)HashMap, ConcurrentHashMap 原理及源码详解 java1.7