// 初始化最小差值为一个较大的数
$minDifference = 500000;
先看一下会员等级表规则的表结构
普通会员默认注册就是,经验值0
1.先查询出最高等级所需要的经验值
//先查询最高等级所需要的经验值
$b = Db::name('wechat_user_vip')->order('id DESC')->field('exp_num')->find();
2.在定义一个当前用户的经验值
$expNumToFind = 50;
3.再定义一个空的变量,用来存会员等级的id
$foundID = null;
4.查询出所有的用户等级规则表信息
//查询会员等级表
$wechat_user_vip = Db::name('wechat_user_vip')->field('id,name,exp_num')->select();
5.开始循环遍历匹配
foreach ($wechat_user_vip as $item) {
//现获取等级的经验值
$currentExpNum = (int) $item["exp_num"];
//在用用户当前的经验值 - 当前等级的经验值
$difference = $expNumToFind - $currentExpNum;
//如果大于等于0 并且 小于封顶的经验值
if ($difference >= 0 && $difference < $minDifference) {
//将当前找到的差值赋值给$minDifference
$minDifference = $difference;
//然后将当前所属等级的id赋值给foundID
$foundID = $item["id"];
}
}
最后然后再判断修改用户的等级ID
//会员等级如果不相等,就给它修改为新的会员等级
if($new_user_data['vip_grade'] != $foundName){
Db::table('glh_wechat_user')->where('id',$new_user_data['id'])->setField('vip_grade', $foundName);
}