search
Homephp教程php手册php随机抽奖实例分析

这篇文章主要介绍了php随机抽奖实现方法,实例分析了php抽奖类lottery_tool及其具体使用技巧,需要的朋友可以参考下

本文实例讲述了php随机抽奖用法。分享给大家供大家参考。具体分析如下:

1. 按照设定的概率,得到随机抽奖的结果。    

复制代码 代码如下:

/**
 * 抽奖工具
 */
class lottery_tool {
    protected static $awardsArr;
    protected static $proField = 'probability';
    protected static $proSum = 0;
    protected static $checkAward = false;
    const SUCCESS_CODE = 0;
    const FAIL_CODE = -1;
    //检查抽奖数据
    protected static function checkAwards(){
        if (!is_array(self::$awardsArr) || empty(self::$awardsArr)) {
            return self::$checkAward = false;
        }
        self::$proSum = 0;
        foreach (self::$awardsArr as $_key => $award) {
            self::$proSum += $award[self::$proField];
        }
        if (empty(self::$proSum)) {
            return self::$checkAward = false;
        }
        return self::$checkAward = true;
    }
    protected static function successRoll($rollKey){
        return array('code' => self::SUCCESS_CODE, 'roll_key' => $rollKey, 'msg' => 'roll success');
    }
    protected static function failRoll($msg = 'roll fail'){
        return array('code' => self::FAIL_CODE, 'msg' => $msg );
    }
    //抽奖
    public static function roll () {
        if (false == self::$checkAward) {
            return self::failRoll('awards data is not the right format!');
        }
        $result = mt_rand(0, self::$proSum);
        $proValue = 0;
        foreach (self::$awardsArr as $_key => $value) {
            $proValue += $value[self::$proField];
            if ($result                 return self::successRoll($_key);
            }
        }
        return self::failRoll('wrong');
    }
    //改变概率字段名
    public static function setProField($field = null) {
        if (!empty($field)) {
            self::$proField = $field;
        }
    }
    //设置奖品
    public static function setAwards($awards){
        self::$awardsArr = $awards;
        self::checkAwards();
    }
}


2. 示例代码:

复制代码 代码如下:

$awards = array(
    '0' => array('pro' => 15, 'info' => '15%的可能性'),
    '1' => array('pro' => 25, 'info' => '25%的可能性'),
    '2' => array('pro' => 40, 'info' => '40%的可能性'),
    '3' => array('pro' => 20, 'info' => '20%的可能性'),
    );
lottery_tool::setProField('pro');
lottery_tool::setAwards($awards);
$result = array();
for ($i = 10000; $i --;) {
    $result[] = lottery_tool::roll();
}
foreach ($result as $key => $value) {
    $awards[$value['roll_key']]['num'] ++;
}
echo '

';<br>
var_dump($awards);
<p>运行结果如下:<br>
</p><p><span>复制代码</span> 代码如下:</p><p>array<br>
  0 => <br>
    array<br>
      'pro' => int 15<br>
      'info' => string '15%的可能性' (length=15)<br>
      'num' => int 1596<br>
  1 => <br>
    array<br>
      'pro' => int 25<br>
      'info' => string '25%的可能性' (length=15)<br>
      'num' => int 2484<br>
  2 => <br>
    array<br>
      'pro' => int 40<br>
      'info' => string '40%的可能性' (length=15)<br>
      'num' => int 3939<br>
  3 => <br>
    array<br>
      'pro' => int 20<br>
      'info' => string '20%的可能性' (length=15)<br>
      'num' => int 1981</p>
<p>希望本文所述对大家的php程序设计有所帮助。</p>
,


Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function