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是会报错,所以改了一些东西

原文地址:https://www.cnblogs.com/mnhy/p/7826820.html