概率性抽奖(lottery_raffle)
//chance为抽到概率,数值越小,概率越小
$arr = [
['name'=>'1000元手机','chance'=>'1'],
['name'=>'100元代金券','chance'=>'10'],
['name'=>'10元代金券','chance'=>'100'],
['name'=>'谢谢参与','chance'=>'700'],
];
/**
* 抽奖概率算法
* @param array $prizeArr 奖品数组
* @param string $index 概率键名
* @return mixed 抽到的奖品
*/
function lottery_raffle($prizeArr,$index='chance')
{
$result = '';
$randArr = [];
$i = 1;
foreach($prizeArr as $item){
$randArr[$i] = $item[$index];
$i++;
}
//概率数组的总概率精度
$proSum = array_sum($randArr);
//概率数组循环
foreach ($randArr as $key => $val) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $val) {
$result = $key;
break;
} else {
$proSum -= $val;
}
}
return $prizeArr[$result];
}
获取指定的文件后缀名(get_file_extension)
/**
* 获取指定文件的后缀名
* @param array $input 输入的数组
* @param string $columnKey 指定数组列明
* @param null $indexKey
* @return array
*/
function get_file_extension($file) {
//SPLFileInfo类的getExtension方法,需要5.3.6+版本
if(version_compare(PHP_VERSION,'5.3.6','>=')){
$fileInfo = new splFileInfo($file);
return $fileInfo->getExtension();
}else{
$fileInfo = pathinfo($file);
return $fileInfo['extension'];
}
}
$file = 'C:\Users\Administrator\Desktop\新建文件夹\127.0.0.1\test.txt';
//输出 txt
echo $test->get_file_extension($file);
格式化文件大小(file_format_size)
/**
* 格式化文件大小
* @param string $file 指定文件
* @param array $unitList 对应单位列表
* @return string
*/
function file_format_size($file,$unitList = array()){
$size = filesize($file);
if(empty($size)){
return '';
}
if(empty($unitList))
$unitList = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
$i = intval(log($size, 1024));
return (round($size/pow(1024, $i), 2) . $unitList[$i]);
}
$file = 'test.txt';
//输出 100KB
echo file_format_size($file);
//chance为抽到概率,数值越小,概率越小
$arr = [
['name'=>'1000元手机','chance'=>'1'],
['name'=>'100元代金券','chance'=>'10'],
['name'=>'10元代金券','chance'=>'100'],
['name'=>'谢谢参与','chance'=>'700'],
];
/**
* 抽奖概率算法
* @param array $prizeArr 奖品数组
* @param string $index 概率键名
* @return mixed 抽到的奖品
*/
function lottery_raffle($prizeArr,$index='chance')
{
$result = '';
$randArr = [];
$i = 1;
foreach($prizeArr as $item){
$randArr[$i] = $item[$index];
$i++;
}
//概率数组的总概率精度
$proSum = array_sum($randArr);
//概率数组循环
foreach ($randArr as $key => $val) {
$randNum = mt_rand(1, $proSum);
if ($randNum <= $val) {
$result = $key;
break;
} else {
$proSum -= $val;
}
}
return $prizeArr[$result];
}
获取指定的文件后缀名(get_file_extension)
/**
* 获取指定文件的后缀名
* @param array $input 输入的数组
* @param string $columnKey 指定数组列明
* @param null $indexKey
* @return array
*/
function get_file_extension($file) {
//SPLFileInfo类的getExtension方法,需要5.3.6+版本
if(version_compare(PHP_VERSION,'5.3.6','>=')){
$fileInfo = new splFileInfo($file);
return $fileInfo->getExtension();
}else{
$fileInfo = pathinfo($file);
return $fileInfo['extension'];
}
}
$file = 'C:\Users\Administrator\Desktop\新建文件夹\127.0.0.1\test.txt';
//输出 txt
echo $test->get_file_extension($file);
格式化文件大小(file_format_size)
/**
* 格式化文件大小
* @param string $file 指定文件
* @param array $unitList 对应单位列表
* @return string
*/
function file_format_size($file,$unitList = array()){
$size = filesize($file);
if(empty($size)){
return '';
}
if(empty($unitList))
$unitList = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
$i = intval(log($size, 1024));
return (round($size/pow(1024, $i), 2) . $unitList[$i]);
}
$file = 'test.txt';
//输出 100KB
echo file_format_size($file);