```php
/**
* 计算中奖概率
*/
public function get_rand($proArr)
{
$result = '';
//概率数组的总概率精度
$proSum = array_sum($proArr);
// var_dump($proSum);
//概率数组循环
foreach ($proArr as $key => $proCur) {
$randNum = mt_rand(1, $proSum); //返回随机整数
if ($randNum <= $proCur) {
$result = $key;
break;
} else {
$proSum -= $proCur;
}
}
unset ($proArr);
return $result;
}
```
```php
/**
* 执行抽奖
*/
public function get_gift()
{
$userinfo = $this->auth->getUserinfo();
if ($userinfo['ctimes'] < 1) {
$this->error('抽奖次数不够');
}
// if (Cache::has('gift202104191626')) {
// $prize_arr = Cache::get('gift202104191626');
// } else {
$prize_arr = array();
$data = Prize::where([])->order('weigh asc')->select();
foreach ($data as $k => $v) {
$ls['id'] = $v['id'];
$ls['weigh'] = $v['weigh'];
$ls['prize'] = $v['title'];
$ls['v'] = $v['probability'];
array_push($prize_arr, $ls);
}
// Cache::set('gift202104191626', $prize_arr);
// }
//拼装奖项数组
// 奖项id,奖品,概率
// $prize_arr = array(
// '0' => array('id' => 1, 'prize' => '平板电脑', 'v' => 1),
// '1' => array('id' => 2, 'prize' => '数码相机', 'v' => 2),
// '2' => array('id' => 3, 'prize' => '音箱设备', 'v' => 3),
// '3' => array('id' => 4, 'prize' => '4G优盘', 'v' => 10),
// '4' => array('id' => 5, 'prize' => '10Q币', 'v' => 5),
// '5' => array('id' => 6, 'prize' => '空奖', 'v' => 100),
// );
// $this->success('', $prize_arr);
foreach ($prize_arr as $key => $val) {
$arr[$val['weigh']] = $val['v'];//概率数组
}
// $this->success('', $arr);
$rid = self::get_rand($arr); //根据概率获取奖项id
$res['yes'] = $prize_arr[$rid - 1]['prize']; //中奖项
unset($prize_arr[$rid - 1]); //将中奖项从数组中剔除,剩下未中奖项
shuffle($prize_arr); //打乱数组顺序
for ($i = 0; $i < count($prize_arr); $i++) {
$pr[] = $prize_arr[$i]['prize']; //未中奖项数组
}
$res['no'] = $pr;
// var_dump($res);
// $result['id'] = $rid;
$result['id'] = bcsub($rid, 1);
// $result['subscriptid'] = bcsub($rid, 1);
if ($res['yes'] != '谢谢惠顾') {
$result['status'] = 1;
$result['name'] = $res['yes'];
$prize = new Lucky();
$info = Prize::where(['weigh' => $rid])->find();
$prize->data([
'code' => Random::build('numeric', 9),
'user_id' => $this->auth->id,
'prize_id' => $info['id']
// 'prize_id' => $prize_arr[bcsub($rid, 1)]['id']
]);
$prize->save();
} else {
$result['status'] = -1;
$result['msg'] = $res['yes'];
}
\app\admin\model\User::where('id', $this->auth->id)->setDec('ctimes');
$this->success('', $result);
}
```
- 支付宝身份验证接口踩坑实录-PHP(基于ThinkPHP5)(第二版更新中)
- 抖音小程序开发之授权登录+支付宝支付+微信支付(ThinkPHP5-第三版修订中)
- TP5小知识点锦集(长期更新)
- PHP 二维码生成+识别
- 高德地图点聚合点击事件以及内容渲染
- ThinkPhP5使用phpexcle 导出数据(复制粘贴就可使用)
- Fastadmin微信小程序授权登录+获取手机号插件
- PHP -AES-128-CBC位加密解密
- PHP-Rsa分段加密解密(ThinkPHP5)
- PHP大转盘抽奖代码片段
- Fastadmin 项目上线关闭调试模式注意事项(记一次require-table.js修改事件)
- ThinkPHP5条件查询FIND_IN_SET正反使用
- ThinkPhP5整合微信小程序订阅消息
- think-queue处理延时任务事件
- ThinkPHP5 生成二维码
- Python3定时监控指定文件内容变换-(增加多行,遍历每行进行逻辑分析处理)
- Python3开发声光报警器监控触发报警
- ThinkPHP5下载文件流到本地
- 百度鹰眼抽轨迹集合稀算法&缩放比例调整显示静态图(ThinkPHP5)
- PHP 导出Excle
- Fastadmin 自定义Tab选项卡(B表的条件查询A表的数据,在A表里面加B表的参数作为选项卡)
- Fastadmin 修改url组件跳转为复制功能
- 微信H5分享好友跟朋友圈-基于Easywechat
- Python3抓取监控日志文件关键词跟内容变化修正版
- ThinkPHP5上传图片压缩处理-(解决IOS拍照上传旋转90度问题)最近更新2021年12月9日11:35:07
- 二维数组根据‘key’分组为新的三维数组
- ThinkPHP5 成功部署Workerman 运行示例
- Fastadmin框架TOKEN的使用
- ThinkPHP5 -微信小程序订阅消息开发-插件(插件基于fastadmin开发)
- ThinkPHP5-文本转义emoji表情
- ThinkPHP5 自定义命令行处理 监听Redis key失效触发回调事件,实现延迟任务 实现自动取消订单,自动完成订单
- Fastadmin插件Shopro商城里面短信插件修改为腾讯云短信插件步骤
- Fastadmin框架自定义搜索操作流程
- ThinkPHP5 处理 微信小程序内容安全审核
- Fastadmin自定义快捷搜索之模糊搜索关联他表
- php根据年月获取指定月份天数及日期数组的方法
- PHP构造函数使用校验token
- 基于ThinkPHP5&Redis腾讯云短信验证码注册登录基础业务逻辑代码整合
- ThinkPHP 解决跨域问题
- 支付宝沙箱环境测试支付(好久没做都忘了,写个博客比较省事)
- ThinkPHP5生成抖音小程序带参数二维码
- ThinkPHP5导入Excle-简单丝滑
- PHP生成带参数的小程序二维码
- ThinkPHP5成功调通IOS苹果支付
- swoole写聊天室,简单粗暴
- 微信小程序内容安全鉴别的时候,不成功因为没有转码
- Fastadmin 后台Excle文件上传(更新新增功能)
- Lnmp 配置thinkphp5 Nginx基础设置,包含http+https配置
- 通过经纬度获取数据库信息自动计算地址距离远近
- 二维数组根据某个字段排序
- PHP二维数组去重,最简单的方法
- TP5微信redis列队群发模板消息Sendmsg
- PHP检测是否关注公众号,亲测可用
- 小程序推广分享带参数二维码生成
- 基于ThinkPHP5微信H5授权登录获取用户信息(改进版)
- php过滤微信昵称中的表情
- Socket.io