php实现红包接口
/**
* 随机红包函数
* @param $total 红包总金额
* @param $num 红包个数
* @return array
*/
public function packet($total, $num) {
$min = 0.01; //红包最小值
$redPacket = []; //初始化红包数组
if ($total / $num == $min) {
for ($i=1;$i<$num;$i++) {
$redPacket[$i] = (string)$min;
}
$redPacket[$num] = (string)$min;
}else {
for ($i=1;$i<$num;$i++)
{
$safe_total = ($total-($num-$i)*$min)/($num-$i); //随机数安全上限
$money = @mt_rand($min*100,$safe_total*100)/100; //红包值
if ($money < $min) {
$money = $min;
}
$total -= $money;
$redPacket[$i] = sprintf('%.2f', $money);
}
$redPacket[$num] = sprintf('%.2f', $total);
}
shuffle($redPacket);
// dump($redPacket);
return $redPacket;
}
网上的发红包方法有一个bug,当红包数目为10,金额0.1是会报错,所以改了一些东西

浙公网安备 33010602011771号