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

1. 按照设定的概率,得到随机抽奖的结果。     复制代码 代码如下:<?php /** * 抽奖工具 */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 <= $proValue) {                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 "<pre>";var_dump($awards);

运行结果如下:复制代码 代码如下:array  0 =>     array      "pro" => int 15      "info" => string "15%的可能性" (length=15)      "num" => int 1596  1 =>     array      "pro" => int 25      "info" => string "25%的可能性" (length=15)      "num" => int 2484  2 =>     array      "pro" => int 40      "info" => string "40%的可能性" (length=15)      "num" => int 3939  3 =>     array      "pro" => int 20      "info" => string "20%的可能性" (length=15)      "num" => int 1981

希望本文所述对大家的php程序设计有所帮助。