php像微信一样生成随机红包代码

代码如下:

	//$amount:红包金额 $num:生成红包数量
 	public function money($amount,$num){
 		if(!is_numeric($amount)){
 			return "请传入正确金额!";
 		}

 		if($amount < 0){
 			return "请传入大于0的金额!";
 		}

 		if($num <= 0){
 			return "红包数要大于0!";
 		}
		
		if($num/100 > $amount){
 			return "红包金额过少,至少保证每个红包有0.01元";
 		}		

 		$amount *= 100; //金额乘以100,随机小数点后2位

 		$arr = array(); //储存生成红包金额的数组

 		$count = 0; //统计已生成红包金额的总和

 		$multiple = 0.3; //设置生成红包金额不能超过总金额的倍数

 		//根据生成红包数进行循环生成
 		for($i = 1; $i <= $num; $i++){
 			//生成第一个红包,且生成红包数量不等于1
 			if($count == 0 && $num != 1){
 				//随机生成金额,至少预留剩余人数的金额 每人至少0.01,已乘100,所以至少为1
 				$rand = rand(1,$amount-($num - $i));
 				//循环判断生成金额不能小于或等于0或大于剩余金额的0.5倍,看个人情况修改
 				while($rand < 0 || $rand == 0 || $rand > $amount * $multiple){
 					$rand = rand(1,$amount-($num - $i)); //重新生成金额
 				}
 			}else if($i == $num || $num == 1){ //生成最后一个红包或红包数等于1时
 				$rand = $amount-$count; //直接将剩余金额赋值
 			}else{
 				//同上
 				$rand = rand(1,$amount-$count-$num - $i);
 				//同上
 				while($rand < 0 || $rand == 0 || $rand > $amount * $multiple){
 					$rand = rand(1,$amount-$count-$num - $i);//重新生成金额
 				}
 			}
 			
 			$count += $rand; //统计生成的总金额

 			$arr[] = $rand/100; //转回原来的金额并存入数组
 		}
 		return $arr;
 	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值